You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB统计代理地址对应success字段不同取值的出现频次

MongoDB 多代理成功失败次数批量统计方案

直接使用MongoDB内置的聚合管道即可一次性完成所有代理的统计需求,无需逐个查询代理,语句如下:

db.spider_results.aggregate([
  {
    $group: {
      // 按代理地址分组
      _id: "$proxy.proxy",
      // 统计success为true的次数
      success_true: {
        $sum: {
          $cond: ["$success", 1, 0]
        }
      },
      // 统计success为false的次数
      success_false: {
        $sum: {
          $cond: ["$success", 0, 1]
        }
      }
    }
  }
])

说明

  • $group阶段会将所有数据按proxy.proxy字段的值聚合,每个代理地址对应一条统计结果
  • $cond为条件表达式,符合条件时返回1计入统计,不符合则返回0
  • 可额外在聚合末尾添加$sort阶段对代理地址或者统计次数排序,方便后续处理

返回结果示例

执行上述语句后会得到如下结构的结果:

[
  {
    "_id": "196.0.1.1:1500",
    "success_true": 1,
    "success_false": 1
  },
  {
    "_id": "192.168.255.255:1500",
    "success_true": 2,
    "success_false": 0
  }
]

后续只需遍历该结果,即可输出你需要的格式,比如Python处理示例:

cursor = db.spider_results.aggregate([...])
for item in cursor:
    proxy = item["_id"]
    print(f"{proxy:<22} --> success:true  = {item['success_true']}")
    print(f"{proxy:<22} --> success:false = {item['success_false']}")

性能优化建议

如果集合数据量较大,可创建{ "proxy.proxy": 1, "success": 1 }的复合索引,进一步提升聚合查询效率。

内容的提问来源于stack exchange,提问作者jonbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:27:03