我使用它来获取创建的用户的白天计数,但是当我总结所有结果的计数时,当我的集合有200K时,我总共得到大约10K用户。 我错过了什么?
var mapFn= function() {
var dt = this._id.getTimestamp();
var yr = dt.getFullYear();
var mo = dt.getMonth() + 1;
var dy = dt.getDate();
var dt_str = yr + '-' + ((mo<10)?'0'+mo:mo) + '-' + ((dy<10)?'0'+dy:dy);
emit( dt_str, 1);
};
var redFn = function(k, v) {
return v.length;
};
db.users.mapReduce(mapFn, redFn, {out:{ "inline": 1 }});
答案 0 :(得分:0)
显然,reduce函数中的v是一个数组数组。关于mongos部分的非常糟糕的文档。仍然非常高兴它有效:)
这是代码:
var mapFn= function() {
var dt = this._id.getTimestamp();
var yr = dt.getFullYear();
var mo = dt.getMonth() + 1;
var dy = dt.getDate();
var dt_str = yr + '-' + ((mo<10)?'0'+mo:mo) + '-' + ((dy<10)?'0'+dy:dy);
emit( dt_str, {count: 1});
};
var redFn = function(k, v) {
var total = 0;
for(var i = 0; i < v.length; i++) { total += v[i].count; }
return {count: total};
};
db.users.mapReduce(mapFn, redFn, {out:{ "inline": 1 }});
感谢这个问题: MongoDB count number of new documents per minute based on _id