Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 将集合聚合为超集_Mongodb_Aggregation Framework_Accumulator - Fatal编程技术网

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 :

考虑到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 : "$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"] })