Med*_*edo 3 arrays concatenation mongodb mongodb-query aggregation-framework
我开始发现mongodb
,我想将其连接images
到同一个数组中
这个例子:
{user_id:01, images:[10,20,30,40,50]}
{user_id:02, images:[11,22,33,44,55]}
{user_id:03, images:[12,22,32,42,52]}
{user_id:04, images:[13,23,33,43,53]}
Run Code Online (Sandbox Code Playgroud)
想要的结果:
images:[10,20,30,40,50,11,22,33,44,55,12,22,32,42,52,13,23,33,43,53]
Run Code Online (Sandbox Code Playgroud)
我通过文档找到了$aggreagation
解决方案,这是我尝试过的:
db.results.aggregate([{ $project: { images: { $concatArrays: ["$images"]}}}])
Run Code Online (Sandbox Code Playgroud)
但它只是连接来自同一个对象的数组,在我的例子中,正如我提到的,将具有不同对象result wanted
名称的所有数组连接为一个images
您需要两个步骤:
$group与 const 值(如null
)作为分组_id
以获取数组的数组(来自所有文档)和$reduce以展平所有数组
db.collection.aggregate([
{
$group: {
_id: null,
images: { $push: "$images"}
}
},
{
$project: {
_id: 0,
images: {
$reduce: {
input: "$images",
initialValue: [],
in: {
$concatArrays: [ "$$this", "$$value"]
}
}
}
}
}
])
Run Code Online (Sandbox Code Playgroud)