Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays mongodb-从集合中的两个数组中获取一个数组_Arrays_Mongodb_Aggregate - Fatal编程技术网

Arrays mongodb-从集合中的两个数组中获取一个数组

Arrays mongodb-从集合中的两个数组中获取一个数组,arrays,mongodb,aggregate,Arrays,Mongodb,Aggregate,在我的mongodb集合中,一个文档上有时有两个、有时有一个、有时有空数组。现在我想在整个集合上得到一个数组,其中包含这些数组的值 该文档如下所示: { "title" : "myDocument", "listOne" : [ "valueOne", "valueTwo" ], "listTwo" : [

在我的mongodb集合中,一个文档上有时有两个、有时有一个、有时有空数组。现在我想在整个集合上得到一个数组,其中包含这些数组的值

该文档如下所示:

{
    "title" : "myDocument",
    "listOne" : [ 
        "valueOne", 
        "valueTwo"
    ],
    "listTwo" : [ 
        "abc", 
        "qwer"
    ]
},
{
    "title" : "myDocumentTwo",
    "listTwo" : [  
        "321"
    ]
},
{
    "title" : "myDocumentAlpha",
    "listOne" : [ 
        "alpha", 
        "beta"
    ]
},
{
    "title" : "myDocumentbeta"
}
我期望得到以下结果:

"combinedList" : [
    "valueOne", 
    "valueTwo",
    "abc",
    "qwer",
    "321",
    "alpha",
    "beta"
]

这就像这个集合中每个文档中这两个数组中的每个可能值一样。

您可以使用
聚合和


“这就像这个集合中每个文档中这两个数组中的每个可能值一样。”你能更新你的帖子来说明这一点吗?最终的结果应该是什么?现在您只显示一个文档。我更新了它。最终的结果是一个数组,其中包含其他数组中所有可能的值。如果listOne和listTwo中存在相同的值,是否可以筛选只显示一次的combinedList?这应该已经起作用了,因为我们使用的是
$group
,因此您在combinedList中始终具有不同的值
db.collection.aggregate([
  {
    $project: {
      combinedList: {
        $concatArrays: [{$ifNull: ["$listOne", []]}, {$ifNull: ["$listTwo", []]}]
      }
    }
  },
  { $unwind: "$combinedList" },
  { $group: { _id: null, combinedList: { $addToSet: "$combinedList"}}},
  { $project: { _id: 0, combinedList: 1 }}
])