![](/img/trans.png)
[英]Calculate a Mathematic formula for each element of array field - Mongodb Aggregation Framework
[英]How to extract the field of an array element in MongoDB Aggregation?
所以,我的文档就像下面的例子。
{
image: {imageUrl: "http://imageurlsite.com/xyz"},
additionalImages: [
{imageUrl: "http://imageurlsite.com/pdq"},
{imageUrl: "http://imageurlsite.com/lol"},
{imageUrl: "http://imageurlsite.com/zomg"}
]
}
使用 MongoDB 聚合管道,如何在不包含imageUrl
部分的情况下从image
和additionalImages
创建新的数组字段? 我想要这样的新字段:
[
"http://imageurlsite.com/xyz",
"http://imageurlsite.com/pdq",
"http://imageurlsite.com/lol",
"http://imageurlsite.com/zomg"
]
我尝试在$group
阶段使用以下内容,这部分有效,但我只想要字符串值。
{
image: {$addToSet: "$image"},
additionalImages: {$addToSet: "$additionalImages"}
}
不幸的是,上面的结果给了我这个;
[
{imageUrl: "http://imageurlsite.com/xyz"},
{imageUrl: "http://imageurlsite.com/pdq"},
{imageUrl: "http://imageurlsite.com/lol"},
{imageUrl: "http://imageurlsite.com/zomg"}
]
演示 - https://mongoplayground.net/p/KOSCPLetrZO
db.collection.aggregate([
{
$group: {
_id: null,
image: { $addToSet: "$image.imageUrl" }, // take imageUrl
additionalImages: { $addToSet: "$additionalImages.imageUrl" } // take imageUrl
}
},
{
$set: {
images: {
"$concatArrays": [ // combine both arrays
{ "$first": "$additionalImages" },
"$image"
]
}
}
},
{
"$project": { images: 1 } // project only images
}
])
Output -
[
{
"_id": null,
"images": [
"http://imageurlsite.com/pdq",
"http://imageurlsite.com/lol",
"http://imageurlsite.com/zomg",
"http://imageurlsite.com/xyz"
]
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.