如何在 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 中执行其他常见操作: