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
私は何が欠けていますか?