首页 > 解决方案 > 返回由 mongoDb 上的特定字段找到的重复文档的 _id 对

问题描述

在我这些天运行的数据库数据迁移期间,我发现保留在集合中的文档不应该再存在了。

我通过 MongoShell 使用以下 MongoDB 聚合方法成功地通过 unitId 字段找到了重复项。

db.collection.aggregate( 
{"$group" : { "_id": "$unitId", "count": { "$sum": 1 } } }, 
{"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, 
{"$project": {"id" : "$_id", "_id" : 0} } 
).toArray()

此查询返回:

[{"unitId" : ObjectId("5cfcf47043289e2b4db14d5d")}...]

但我不想删除我发现的重复项。

相反,我想将它们合并到一个包含必要数据的文档中。

我想得到类似以下或类似的结果:

[{_id1: 'xxxxxxxxxx', _id2: 'xxxxxxxxxxx'}...]

我认为 Mongo 在一个查询中返回这些数据会很棒。而不是再次搜索结果数组。

提前致谢 (:

标签: node.jsmongodbaggregate

解决方案


推荐阅读