mongo mapReduce 按对象 ID 分组创建日期给出的结果太少



我用它来获取创建的用户的天数,但是当我汇总结果的所有计数时,当我的集合有 10K 时,我总共获得了大约 200K 的用户。我错过了什么?

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根据_id计算每分钟新文档的数量

相关内容

  • 没有找到相关文章

最新更新