MongoDB查询不同类别的集合

时间:2019-01-14 13:36:57

标签: mongodb mongodb-query

我的Mongo数据库有一个包含字符串数组的字段,如下所示:

db.band.insertMany([
   { name: "Alice", instrument: ["guitar", "voice"] },
   { name: "Bob", instrument: ["bass"] },
   { name: "Eve", instrument: ["drums", "voice"] }
]);

我想查询数据库以查找乐队成员可以演奏的不同乐器的集合(在此示例中:["guitar", "voice", "bass", "drums"])。

是否可以通过简单的查询来做到这一点?我一直找不到与此相关的任何东西。

1 个答案:

答案 0 :(得分:1)

您可以使用$unwind获取每个工具的文档,然后使用$group$addToSet获取所有文档的唯一值:

db.band.aggregate([
    {
        $unwind: "$instrument"
    },
    {
        $group: {
            _id: null,
            instruments: { $addToSet: "$instrument" }
        }
    }
])

输出:

{
    "_id": null,
    "instruments": [
        "drums",
        "bass",
        "voice",
        "guitar"
    ]
}