如何检索MongoDB数据并按userId分组查询重复条目
MongoDB 按userId分组查找重复数据操作方法
参考数据说明
现有数据库示例数据

预期输出效果

核心实现逻辑
使用MongoDB聚合管道完成需求,分为两个核心阶段:
- 按
userId字段分组,统计每个userId的出现次数 - 过滤出出现次数大于1的分组,即为存在重复的
userId
具体查询代码
基础版(仅返回重复userId和重复次数)
db.yourCollectionName.aggregate([ { $group: { _id: "$userId", repeatCount: { $sum: 1 } } }, { $match: { repeatCount: { $gt: 1 } } } ])
进阶版(同时返回重复条目的_id列表)
如果需要后续定位删除重复数据,可以加字段记录所有重复条目的_id:
db.yourCollectionName.aggregate([ { $group: { _id: "$userId", repeatCount: { $sum: 1 }, repeatEntryIds: { $push: "$_id" } } }, { $match: { repeatCount: { $gt: 1 } } } ])
全量重复条目查询
如果需要导出所有重复条目的完整信息,可以执行以下两步查询:
// 第一步:获取所有存在重复的userId列表 const duplicateUserIdList = db.yourCollectionName.aggregate([ { $group: { _id: "$userId", count: { $sum: 1 } } }, { $match: { count: { $gt: 1 } } } ]).map(item => item._id) // 第二步:查询这些userId对应的所有完整条目 db.yourCollectionName.find({ userId: { $in: duplicateUserIdList } })
注意:将代码中的
yourCollectionName替换为你实际的集合名称即可使用。
内容的提问来源于stack exchange,提问作者NewTester
相关产品推荐
相关产品推荐

