鉴于MongoDB中的以下数据:
[
{ id: 1, stuff: ["A", "B"] },
{ id: 2, stuff: ["B", "C"] },
... (lots and lots of records)
]
是否有可能获得所有"东西的结合"套?例如["A","B","C"]
我已尝试使用$addToSet
aggregate([
{ $group: {
_id: null,
allStuff: { $addToSet: "$stuff" }
}
}
])
但是会创建一组例如[ ["A", "B"], ["B", "C"] ]
答案 0 :(得分:1)
好的,在展示您的尝试后,您可以执行以下操作:
db.a.aggregate([
{ $unwind : "$stuff" },
{ $group : {
_id: null,
all : {$addToSet : "$stuff"}
}}
])
在开头它unwinds你拥有的数组中的所有元素,然后只是尝试将它们全部添加到集合中。
db.a.insert({ id: 1, stuff: ["A", "B"] })
db.a.insert({ id: 2, stuff: ["B", "C"] })
db.a.insert({ id: 3, stuff: ["A", "B", "C", "D"] })
给你:{ "_id" : null, "all" : [ "D", "C", "B", "A" ] }