我的資料如下所示:
[
{
"_id":"61717cafd351f3ae8b6d205a",
"restaurant":"Hogwarts",
"purchasedAt":"2021-10-20T17:47:40.166Z",
"products":[
{
"name":"Meat Samosa",
"price":3.95,
"quantity":1,
"_id":"61717cafd351f3ae8b6d205b"
},
{
"name":"Pilau Rice",
"price":2.95,
"quantity":1,
"_id":"61717cafd351f3ae8b6d205f"
}
]
},
{
"_id":"61717cb2d351f3ae8b6dd05b",
"restaurant":"Hogwarts",
"purchasedAt":"2021-10-20T03:14:11.111Z",
"products":[
{
"name":"Pilau Rice",
"price":2.95,
"quantity":1,
"_id":"61717cb2d351f3ae8b6dd05d"
}
]
},
]
我試圖找到一個查詢,可以讓我得到所有產品(沒有重復)和它們的數量相加。請注意,即使產品 ID 相同(名稱相同),產品 ID 也不同 理想情況下,我的回復如下所示
[
{
name: "Meat Samosa",
price: 3.95,
quantity: 1
},
{
name: "Pilau Rice",
price: 2.95,
quantity: 2
}
]
uj5u.com熱心網友回復:
$project顯示必填欄位$unwind解構products陣列$group通過name并獲得第一個price并計算quantity總和$project顯示必填欄位
db.collection.aggregate([
{
$project: {
_id: 0,
products: 1
}
},
{ $unwind: "$products" },
{
$group: {
_id: "$products.name",
price: { $first: "$products.price" },
quantity: { $sum: "$products.quantity" }
}
},
{
$project: {
_id: 0,
name: "$_id",
price: 1,
quantity: 1
}
}
])
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/329528.html
標籤:数据库 MongoDB 猫鼬 mongodb-查询 聚合框架
