【发布时间】:2016-02-11 09:34:59
【问题描述】:
我在 mongodb 中使用 map reduce 来找出像这样的客户的订单数量
db.order.mapReduce(
function() {
emit (this.customer,{count:1})
},
function(key,values){
var sum =0 ;
values.forEach(
function(value) {
sum+=value['count'];
}
);
return {count:sum};
},
{
query:{customer:ObjectId("552623e7e4b0cade517f9714")},
out:"order_total"
}).find()
这给了我这样的输出
{ "_id" : ObjectId("552623e7e4b0cade517f9714"), "value" : { "count" : 13 } }
目前它正在为一个关键的客户工作。现在我希望它为订单集合中的所有客户运行这个 map reduce 查询,并像这个单一输出一样为所有客户输出结果。有什么方法可以让所有客户按顺序进行操作吗?
【问题讨论】:
-
删除“查询”。它正在选择一个客户。没有它,这将减少到每个客户一个结果。
-
我删除了这个 { query:{customer:ObjectId("552623e7e4b0cade517f9714")}, out:"order_total"},现在它显示错误错误:断言失败:需要提供一个 optionsOrOutString,我有什么做错了吗?
-
是的,我的错误我也删除了一部分,非常感谢哥们
-
好吧,我确实说过删除“查询”而不是整个选项参数。 “out”是选项的必需键。所以只需删除“查询”和它的数据。另请阅读documentation。它确实是解释事物的最佳来源。