【发布时间】:2012-05-12 11:59:29
【问题描述】:
我想通过按日期累积来计算用户。我有以下地图减少功能:
var m = function(){
// creation date
var d = new Date(parseInt(this._id.toString().slice(0,8), 16)*1000);
// ticks
var t = d.getTime();
emit(d2,d3);
};
var r = function(k,v){
return v[0]; // just go next with ticks
};
var opts = { out : { merge : "UserAccum", db : "Metric"},
finalize: function(k,v){
var str = "parseInt(this._id.toString().slice(0,8), 16)*1000 <= "+v;
return db.User.count({$where:str});
}
};
var res = db.Provider.mapReduce(m, r, opts);
运行时出现错误:
Sat May 12 17:47:23 uncaught exception: map reduce failed:{
"assertion" : "invoke failed: JS Error: TypeError: db has no properties
nofile_b:2",
"assertionCode" : 9004,
"errmsg" : "db assertion failure",
"ok" : 0
}
似乎无法调用 db. finalize 里面的方法。 为什么?
我知道我可以从 map() 和 reduce() 调用
【问题讨论】:
-
是的,因为我不接受答案。我的问题通常是“为什么”,而不是“如何”
-
如果它回答了您的问题,您应该接受它。这有助于未来的读者并奖励回答者。