Mongodb 将集合聚合为超集
考虑到MongoDB中的以下数据:Mongodb 将集合聚合为超集,mongodb,aggregation-framework,accumulator,Mongodb,Aggregation Framework,Accumulator,考虑到MongoDB中的以下数据: [ { id: 1, stuff: ["A", "B"] }, { id: 2, stuff: ["B", "C"] }, ... (lots and lots of records) ] 有可能得到所有“东西”集合的并集吗?e、 g.[“A”、“B”、“C”] 我试过使用 但这会创建一组集合,例如,[[“a”,“B”],[“B”,“C”]好的,在显示您的尝试后,您可以执行以下操作: db.a.aggregate([ { $unwind :
[
{ id: 1, stuff: ["A", "B"] },
{ id: 2, stuff: ["B", "C"] },
... (lots and lots of records)
]
有可能得到所有“东西”集合的并集吗?e、 g.[“A”、“B”、“C”]
我试过使用
但这会创建一组集合,例如,
[[“a”,“B”],[“B”,“C”]
好的,在显示您的尝试后,您可以执行以下操作:
db.a.aggregate([
{ $unwind : "$stuff" },
{ $group : {
_id: null,
all : {$addToSet : "$stuff"}
}}
])
开始时,它会删除数组中所有的元素,然后尝试将它们全部添加到集合中
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"] })
给您:
{“\u id”:null,“all”:[“D”、“C”、“B”、“A”]}
一切皆有可能。你有没有想过,或者你只是想让别人为你工作?@salvadodali我试过使用$addToSet
。编辑问题以显示我迄今为止所做的工作。查看了文档,但找不到任何其他设置联合的参考。谢谢-$REWIND有多贵?我预计会有几千条记录,“stuff”数组的平均大小为10-20。@Constantinos抱歉,但我很难给出估计。我只能说,对于数据库来说,几千个是超小的。您还可以尝试使用将所有元素收集到数组中,然后查找所有唯一的元素。但是做测量来找出哪一个更好。
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"] })