1
我想在mongodb上的三個表中使用聚合查詢, 我列出了存儲數據庫數據的三個表,並且我向您發送了我使用的查詢, 但輸出沒有得到我想要的結果。如何在側邊數組中使用聚合單個查詢來獲取來自mongodb的詳細信息?
順序表
以表我有一個創造秩序,在該對象中 「訂單明細」
"order_details":[
{
"product_unique_id" : 10
"items":[
{
"item_unique_id" : 1
"quantity":2,
},
{
"item_unique_id" : 2
"quantity":4,
}
]
},
{
"product_unique_id" : 11
"items":[
{
"item_unique_id" : 1
"quantity":1,
},
{
"item_unique_id" : 3
"quantity":3,
},
{
"item_unique_id" : 4
"quantity":2,
}
]
}
]
產品表
Data 1 => {"unique_id":10, "product_name":"Product10", "product_visible":true}
Data 2 => {"unique_id":11, "product_name":"Product11", "product_visible":false}
Data 3 => {"unique_id":12, "product_name":"Product13", "product_visible":true}
... up to N
項目表
Data 1 => {"unique_id":1, "item_name":"Item1", "price":17}
Data 2 => {"unique_id":2, "item_name":"Item2", "price":9}
Data 3 => {"unique_id":3, "item_name":"Item3", "price":34}
Data 4 => {"unique_id":4, "item_name":"Item4", "price":78}
Data 5 => {"unique_id":5, "item_name":"Item5", "price":26}
我想,以表運行聚集查詢,希望響應如下
OUTPUT我要的是
"order_details":[
{
"product_unique_id" : 10,
"product_detail": {"unique_id":10, "product_name":"Product10", "product_visible":true},
"items":[
{
"item_unique_id" : 1
"quantity":2,
"item_details":{"unique_id":1, "item_name":"Item1", "price":17}
},
{
"item_unique_id" : 2
"quantity":4,
"item_details":{"unique_id":2, "item_name":"Item2", "price":9}
}
]
},
{
"product_unique_id" : 11,
"product_detail": {"unique_id":11, "product_name":"Product11", "product_visible":false},
"items":[
{
"item_unique_id" : 1
"quantity":1,
"item_details":{"unique_id":1, "item_name":"Item1", "price":17}
},
{
"item_unique_id" : 3
"quantity":3,
"item_details":{"unique_id":3, "item_name":"Item3", "price":34}
},
{
"item_unique_id" : 4
"quantity":2,
"item_details":{"unique_id":4, "item_name":"Item4", "price":78}
}
]
}
]
我使用了一些查詢這一點,但OUT PUT隨着多件物品
var product_query = {
$lookup:
{
from: "products",
localField: "order_details.product_unique_id",
foreignField: "unique_id",
as: "order_details.product_detail"
}
};
var group_product = {
$group: {
_id: '$order_details'
}
}
var item_query = {
$lookup:
{
from: "items",
localField: "order_details.items.item_unique_id",
foreignField: "unique_id",
as: "order_details.item_details"
}
};
Order.aggregate([
{$unwind: "$order_details"},
{$unwind: "$order_details.items"},
product_query,
item_query,
group_product
], function (error, order) {
// OUT PUT HERE
});
感謝您的信息, 這是我的工作。真棒。 請你分享管道查詢,如果你有。 –
不客氣。你的意思是3.4版本的管道查詢? – Veeram