mongoDB,对两个字段的乘积求和

rod*_*odi 3 mapreduce mongodb mongodb-query aggregation-framework

我有一个项目列表,我希望 mongoDB 返回它们的价格*数量总和的结果,换句话说,我的项目的总价值。

Schema = {
   _id: ObjectId,
   price: Number,
   quantity: Number
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用聚合框架或 map reduce,但我不知道如何正确使用它。

这里有一个寻找价格总和的例子,

db.items.aggregate([
    {$group: {
        _id: null,
        prices: {$sum: "$price"}
    }}
])
Run Code Online (Sandbox Code Playgroud)

这是我想获得的:

db.items.aggregate([
    {$group: {
        _id: null,
        prices: {$sum: "$price"*"$quantity"}
    }}
])
Run Code Online (Sandbox Code Playgroud)

Chr*_*n P 5

您不需要为此使用 map-reduce。您可以使用聚合框架并组合多个聚合运算符。你几乎明白了,你只是错过了最后一部分 - $multiply运算符:

db.items.aggregate([{
    "$group" : { 
        "_id" : null, 
        "prices" : { 
            "$sum" : { 
                "$multiply" : ["$price", "$quantity"]
            }
        }
    }
}]);
Run Code Online (Sandbox Code Playgroud)