我有一个项目列表,我希望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"}
}}
])
答案 0 :(得分:3)
您不需要使用map-reduce。您可以使用聚合框架并组合多个聚合运算符。你几乎得到它,你只是错过了最后一块 - $multiply运算符:
db.items.aggregate([{
"$group" : {
"_id" : null,
"prices" : {
"$sum" : {
"$multiply" : ["$price", "$quantity"]
}
}
}
}]);