如何使用聚合查找集合中的重复条目

时间:2019-03-14 10:23:21

标签: mongodb

{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":1, "name" : "foo"}
{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":2, "name" : "bar"}
{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":3, "name" : "baz"}
{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":4, "name" : "foo"}
{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":5, "name" : "bar"}
{ "_id" : ObjectId("4f127fa55e7242718200002d"), "id":6, "name" : "bar"}

我想使用聚合在“名称”字段中找到此集合中所有重复的条目。例如。 “ foo”出现两次,“ bar”出现3次。

2 个答案:

答案 0 :(得分:1)

您可以在groupaggrgation阶段使用

db.collection.aggregate([{
  $group: {
    _id: "$name",
    count: { $sum: 1 },
    name: { $first: "$name" }
  }
}])

答案 1 :(得分:0)

  

您可以按名称和计数分组。然后以大于1的计数进行过滤。

db.collection.aggregate([
    {
      $group: {
        _id: "$name",
        count: { $sum: 1 }
       }
     },
    {
     $match:{count:{$gt:1}}
     }
   ])

输出:

{ "_id" : "foo", "count":2}
{ "_id" : "bar", "count":3}