我的文档结构如下:
{
"_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")
}
}
如何执行以下查询... 列出值(value) >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 并显示那些订单完整对象。
最佳答案
您还可以使用$expr
查找查询的运算符为:
db.order.find({
$expr: {
$gt: [ {$sum: '$product.price'}, 10000 ]
}
})
关于mongodb - Ho 使用 $sum (聚合)作为对象数组,并检查每个总和是否大于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71296335/