MongoDB:跨文档的列表中的不同项目

时间:2021-05-11 09:48:42

标签: mongodb pymongo

我将我的项目放在一个集合中,如下所示:

{
  "_id": {
      "$oid": "6092037099edca65f29c09d0"
  }, 
  "items": [{"name": "item1"}, {"name": "item2"}, {"name": "item3"}]
}

我想运行一个查询,返回所有集合中的不同项目。

1 个答案:

答案 0 :(得分:1)

您可以使用聚合框架和组操作来获取不同的项目。

首先,获取只有一个项目而不是项目数组的文档。然后,按项目对这些文档进行分组。您将获得与数组中存在的唯一项一样多的组。最后,将组的 _id_ 字段投影到您需要的字段。

以下是 Mongo 查询的示例:

db.collection.aggregate([
{
    $unwind: '$items'
},
{
    $group: {
        _id: "$items"
    }
},
{
    $project: {
        "_id": 0,
        "item": "$_id"
    }
}
])
相关问题