我的 MongoDB 数据库中有这样的结构,集合transactions_dev
:
{
"_id": ObjectId("4f7aab939e2530cc028552f2"),
"count": 1,
"item-id": 2230494020,
"price": 34.99,
"seller-id": 16435416,
"time": "20120403",
"type": "now"
}
我想将它保存到另一个集合中,它将按seller-id
和time
(我想展示每个卖家 ID 的每日销售额(SUM(价格)))进行分组。
为此,我编写了这个 mapreduce:
db.runCommand({
mapreduce: "transactions_dev",
map: function() { emit(
{ t: this.time, s: this.seller-id},
{ msum: this.price }
);},
reduce: function(key, vals) {
var ret = {msum: 0};
for(var i=0; i< vals.length; i++) {
ret.msum += vals[i].msum;
}
return ret;
},
out: 'result1',
verbose: true
});
但我遇到了这样的例外:
"errmsg" : "exception: map invoke failed: JS Error: ReferenceError: id is not defined nofile_b:1",
"code" : 9014,
这是否意味着我必须为减少的数据显式定义 _id 字段?
怎么做?