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)
您不需要为此使用 map-reduce。您可以使用聚合框架并组合多个聚合运算符。你几乎明白了,你只是错过了最后一部分 - $multiply运算符:
db.items.aggregate([{
"$group" : {
"_id" : null,
"prices" : {
"$sum" : {
"$multiply" : ["$price", "$quantity"]
}
}
}
}]);
Run Code Online (Sandbox Code Playgroud)