![](/img/trans.png)
[英]How to return subdocuments from an object in an array with Meteor and MongoDB
[英]How to merge result from $lookup with subdocuments
考慮以下玩具示例:
收藏shops
{
"products": [
{ id: "abc", price: 20.5 },
{ id: "abd", price: 34.0 }
]
}
收藏products
{
_id: "abc",
name: "Apple"
}
運行以下查詢...
db.shops.aggregate([
{
$lookup: {
from: "products",
localField: "products.id",
foreignField: "_id",
as: "product_info"
}
}
])
返回...
[{
"products": [
{ id: "abc", price: 20.5 },
{ id: "abd", price: 34.0 }
],
"product_info": [
{ _id: "abc", name: "Apple" },
{ _id: "abd", name: "Orange" }
]
}]
有沒有辦法“合並” products
和product_info
以獲得以下信息?
[{
"products": [
{ id: "abc", price: 20.5, name: "Apple" },
{ id: "abd", price: 34.0, name: "Orange" }
],
}]
謝謝你的幫助!
您可以使用以下聚合
db.shops.aggregate([
{ $unwind: "$products" },
{
$lookup: {
from: "products",
localField: "products.id",
foreignField: "_id",
as: "products.name"
}
},
{ $unwind: "$products.name" },
{ $addFields: { "products.name": "$products.name.name" }},
{ $group: {
_id: "$_id",
products: {
$push: "$products"
}
}}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.