mongodb - Ho 使用 $sum (聚合)作为对象数组,并检查每个总和是否大于

标签 mongodb sum aggregation-framework

我的文档结构如下:

{
    "_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 ]
    }
})

Mongo Playground

关于mongodb - Ho 使用 $sum (聚合)作为对象数组,并检查每个总和是否大于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71296335/

相关文章:

c - MPI C 树结构全局总和

sum - 带索引变量的符号求和

python - 如何编写数组值的匹配条件?

MongoDB:在 Map Reduce 期间收集 E11000 重复键错误

mongodb - 如何使用聚合查找集合中的重复条目

mysql - 从两个表计算

java - 使用 Java 在 MongoDB 上迭代聚合

node.js - for循环中多个异步函数之后的NodeJS回调

node.js - 如何使用nodejs获取/统计mongodb中的数百万条记录

javascript - 解析对象数组并填充表格 View 单元格 Swift