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

MongoDB聚合查询全集合文档 提取跨文档重复IP及对应文档ID

MongoDB 全量聚合查询实现

你可以直接使用如下聚合管道实现需求,默认假设你的集合名为your_collection,IP数组字段名为ips,文档主键为_id:

db.your_collection.aggregate([
  // 拆分IP数组,生成单IP+对应文档ID的独立记录
  { $unwind: "$ips" },
  // 按IP分组,收集所有关联的文档ID(自动去重,避免同一文档重复IP导致ID重复)
  {
    $group: {
      _id: "$ips",
      doc_ids: { $addToSet: { $toString: "$_id" } }
    }
  },
  // 过滤仅保留至少在2个不同文档出现的IP
  {
    $match: {
      $expr: { $gte: [ { $size: "$doc_ids" }, 2 ] }
    }
  },
  // 可选:直接生成你要求的目标JSON结构,无需后续代码处理
  {
    $group: {
      _id: null,
      ip_map: {
        $push: {
          k: "$_id",
          v: "$doc_ids"
        }
      }
    }
  },
  {
    $replaceRoot: {
      newRoot: { $arrayToObject: "$ip_map" }
    }
  }
])

注意事项

  • 如果你文档的_id本身就是字符串类型,删除$toString转换逻辑即可
  • 若允许同一文档内重复IP对应多次相同ID,可将$addToSet替换为$push
  • 不需要直接返回目标结构的话,删除最后两个聚合阶段即可,会返回{_id: "IP地址", doc_ids: [文档ID数组]}格式的列表,你可以在业务代码中自行转换为目标结构

内容的提问来源于stack exchange,提问作者Jesper MENIX Lund

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:54:03