MongoDB Setunion和分组依据

时间:2019-03-10 04:09:32

标签: mongodb nosql mongodb-query

我有一组条目,其中每个项目都有Extra数组,每个项目都有自己的制造商。我想要的是将具有相同制造商的额外阵列互相连接。

`db.products.aggregate([

 { $project: {allValues: { $setUnion: "$Extras" }, _id: "$Manufacturer" } },

])`

我在上面的查询中使用过,然后每个单独的制造商如下所示。 enter image description here

但是我想要的是如果制造商是菲亚特,将所有的Extras(allvalues)组合在一起

1 个答案:

答案 0 :(得分:2)

您可以使用$unwind来获取每个文档一个Extras,然后使用$group通过Manufacturer$addToSet来获取唯一值:

db.products.aggregate([
    {
        $unwind: "$Extras"
    },
    {
        $group: {
            _id: "$Manufacturer",
            allValues: { $addToSet: "$Extras" }
        }
    }
])