MongoDB明显出现| Map-Reduce字数

时间:2017-08-11 07:52:51

标签: mongodb mapreduce mongodb-query

我有一个集合,其文档如下:

{
    "_id" : ObjectId("45854464646544")
    "ip" : "1.1.1.2",
    "ts" : ISODate("2017-07-31T01:24:15.961Z"),
    "id" : NumberLong(12345)
}

我试图让ip及其数量出现。所以预期的输出是:

{ "_id" : "1.1.1.1", "value" : 130 }
{ "_id" : "10.1.10.1", "value" : 37 }

我尝试使用以下语法来获取预期的输出:

var map = function() {  
    var summary = this.ip;
    if (summary) { 
        for (var i = summary.length - 1; i >= 0; i--) {
            if (summary[i])  {      
               emit(summary[i], 1); 
            }
        }
    }
};

var r = function( key, values ) {    
    return values.length;
};

db.com.newzsocial.analytics.LinkRedirectLog.mapReduce(m, r, { out: {merge: "word_count"}, query: {"id" : {$in : [NumberLong(68075115),NumberLong(68075115),]}, "ts" : {$gte: ISODate("2017-07-31T00:00:00.000Z"), $lte : ISODate("2017-08-06T23:59:59.000Z")}}})

我得到的输出很接近但不正确:

{
        "result" : "word_count",
        "timeMillis" : 8424,
        "counts" : {
                "input" : 1243,
                "emit" : 16269,
                "reduce" : 150,
                "output" : 17
        },
        "ok" : 1
}

{ "_id" : ".", "value" : 130 }
{ "_id" : "0", "value" : 37 }
{ "_id" : "1", "value" : 120 }

输入:1243是正确的。而不是ip,我觉得它选择别的东西。请帮忙。

0 个答案:

没有答案