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

问题描述 投票:1回答:2
{ "_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次。

mongodb
2个回答
1
投票

你可以在group中使用aggrgation阶段

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

0
投票

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

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

输出:

{ "_id" : "foo", "count":2}
{ "_id" : "bar", "count":3}
© www.soinside.com 2019 - 2024. All rights reserved.