如何在 mongodb 中查找重复项


您可以使用以下语法来查找 MongoDB 中具有重复值的文档:

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

该语法的作用如下:

  • 将字段 1 中具有相同值的所有文档分组
  • 匹配具有多个文档的组
  • 投影拥有多个文档的所有组

此特定查询在field1列中查找重复值。只需编辑此值即可更改要搜索的字段。

以下示例展示了如何在具有以下文档的收集团队中使用此语法:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

示例:查找具有重复值的文档

我们可以使用下面的代码来查找“team”列中的所有重复值:

 db.teams.aggregate([
    {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

该查询返回以下结果:

 { name: 'Rockets' }
{ name: 'Mavs' }

这告诉我们,“Rockets”和“Mavs”值在“team”字段中多次出现。

请注意,我们可以简单地将$team替换为$position来查找“position”字段中的重复值:

 db.teams.aggregate([
    {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } },
    {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, 
    {" $project ": {"name": " $_id ", "_id": 0} }
])

该查询返回以下结果:

 { name: 'Guard' }

这告诉我们“Guard”在“position”字段中出现了几次。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见操作:

MongoDB:如何向集合添加新字段
MongoDB:如何分组和计数
MongoDB:如何按多个字段分组

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注