我在 Mongo 有一个集合users
,我执行这个 map reduce,我相信它相当于 COUNT(*) GROUP BY origin
:
> m = function() { for (i in this.membership) {
... emit( this.membership[i].platform_profile.origin, 1 );
... } }
function () {
for (i in this.membership) {
emit(this.membership[i].platform_profile.origin, 1);
}
}
> r = function( id, values ) { var result = 0;
... for ( var i = 0; i < values.length; i ++ ) { result += values[i]; }
... return result; }
function (id, values) {
var result = 0;
for (var i = 0; i < values.length; i++) {
result += values[i];
}
return result;
}
> db.users.mapReduce(m, r, {out : { inline: 1}});
{
"results" : [
{
"_id" : 0,
"value" : 15
},
{
"_id" : 1,
"value" : 449
},
...
}
但是,如果我尝试计算有多少文档将此字段设置为特定值,例如1
,我得到的结果会更少:
db.users.count({"membership.platform_profile.origin": 1});
424
我错过了什么?