我有一个集合,其文档如下:
{
"_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,我觉得它选择别的东西。请帮忙。