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