为每个文档查询数组的不同值

  • 本文关键字:数组 查询 文档 mongodb
  • 更新时间 :
  • 英文 :


我有一个集合,里面有一堆文档,例如

{项目:[ObjectId1, ObjectId2等]}

如何运行查询来识别哪些文档有重复?.distinct在集合中返回不同的值,但我希望能够报告每个文档:

  1. items的长度/大小
  2. 唯一/不同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"
}
}
}
])

游乐场

最新更新