我有一个集合,里面有一堆文档,例如
{项目:[ObjectId1, ObjectId2等]}
如何运行查询来识别哪些文档有重复?.distinct
在集合中返回不同的值,但我希望能够报告每个文档:
items
的长度/大小- 唯一/不同
items
的长度/大小
本质上是为了了解哪些文档在items
数组中有重复项。
您可以使用$addToSet操作符的聚合来在集合中拥有唯一的项:
db.collection.aggregate([
{
"$unwind": "$items"
},
{
"$group": {
"_id": "$_id",
"items_cnt": {
"$sum": 1
},
"unique_items": {
"$addToSet": "$items"
}
}
},
{
"$project": {
"items_cnt": 1,
"unique_items_cnt": {
"$size": "$unique_items"
}
}
}
])
游乐场