mongo mapReduce 按 object id 创建日期分组给出的结果太少
mongo mapReduce to group by object id create date gives too little results
我正在使用它来获取每天创建的用户数,但是当我总结所有结果计数时,当我的 collection 有 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 }});
显然,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
我正在使用它来获取每天创建的用户数,但是当我总结所有结果计数时,当我的 collection 有 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 }});
显然,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