我的檔案結構如下:
{
"_id" : ObjectId("621ccb5ea46a9e41768e0ba8"),
"cust_name" : "Anuj Kumar",
"product" : [
{
"prod_name" : "Robot",
"price" : 15000
},
{
"prod_name" : "Keyboard",
"price" : 65000
}
],
"order_date" : ISODate("2022-02-22T00:00:00Z"),
"status" : "processed",
"invoice" : {
"invoice_no" : 111,
"invoice_date" : ISODate("2022-02-22T00:00:00Z")
}
}
如何進行以下查詢... 列出值 >10000 的訂單的詳細資訊。
我只想顯示價格總和大于 10000 的物件
我試試這個
db.order.aggregate([{$project : {sumOfPrice : {$sum : "$product.price"} }}])
輸出
{ "_id" : ObjectId("621ccb5ea46a9e41768e0ba8"), "sumOfPrice" : 80000 }
{ "_id" : ObjectId("621ccba9a46a9e41768e0ba9"), "sumOfPrice" : 16500 }
{ "_id" : ObjectId("621ccbfaa46a9e41768e0baa"), "sumOfPrice" : 5000 }
我想檢查這個 sumOfPrice 是否大于 10000 并顯示那些訂單完整物件。
uj5u.com熱心網友回復:
您可以$match在檢查此條件之后立即添加一個階段,如下所示:
db.collection.aggregate([
{
$addFields: {
sumOfPrice: {
$sum: "$product.price"
}
}
},
{
$match: {
sumOfPrice: {
$gt: 10000
}
}
}
])
蒙戈游樂場
uj5u.com熱心網友回復:
您還可以將$expr運算子與查找查詢一起使用:
db.order.find({
$expr: {
$gt: [ {$sum: '$product.price'}, 10000 ]
}
})
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435823.html
