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

如何通过PyMongo获取MongoDB中重复记录的完整文档?

PyMongo 获取完整重复文档解决方案

你的现有聚合查询只保留了分组字段和重复计数,没有保存原始文档数据。要获取包含所有字段的完整重复文档,需要调整$group阶段来留存原始文档,再通过后续操作展开输出:

修改后的代码如下:

collection.aggregate([
    # 按描述和价格分组,同时保存每组内的所有完整文档
    {"$group": {
        "_id": {"des": "$Descreption", "price": "$NewPrice"},
        "count": {"$sum": 1},
        "docs": {"$push": "$$ROOT"}  # 用$$ROOT存储当前分组的完整原始文档
    }},
    # 过滤掉描述/价格为null、且重复数不超过1的分组
    {"$match": {"_id.des": {"$ne": None}, "_id.price": {"$ne": None}, "count": {"$gt": 1}}},
    # 将保存的文档数组拆分为单个文档条目
    {"$unwind": "$docs"},
    # 将展开后的原始文档设为输出的根文档
    {"$replaceRoot": {"newRoot": "$docs"}}
])

各阶段说明:

  • $group:通过$push: "$$ROOT"把每个分组下的完整原始文档存入docs数组,同时统计该分组的重复次数。
  • $match:精准过滤掉描述或价格为空的无效分组,只保留重复次数大于1的分组。
  • $unwind:把docs数组拆解,让每个重复的原始文档单独成为一条结果。
  • $replaceRoot:将原始文档设为输出的根结构,最终得到的就是包含所有字段的完整重复文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:57:38