mongoDB,总结两个领域的产物

时间:2014-07-21 10:54:53

标签: mongodb mapreduce mongodb-query aggregation-framework

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

Schema = {
   _id: ObjectId,
   price: Number,
   quantity: Number
}

我尝试使用聚合框架或map reduce,但我无法弄清楚如何正确使用它。

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

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

这是我想要获得的:

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

1 个答案:

答案 0 :(得分:3)

您不需要使用map-reduce。您可以使用聚合框架并组合多个聚合运算符。你几乎得到它,你只是错过了最后一块 - $multiply运算符:

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