【发布时间】:2015-08-20 14:52:34
【问题描述】:
我正在尝试在 MongoDB 中学习 MapReduce 功能。我不想使用聚合,而是想通过自己使用 MapReduce 函数定义的键对集合中的文档进行分组。
我的收藏很酷:
/* 1 */ { "_id" : ObjectId("55d5e7287e41390ea7e83a55"), “身份证”:“一”, “酷”:“a1”}
/* 2 */ { "_id" : ObjectId("55d5e7287e41390ea7e83a56"), “身份证”:“一”, “酷”:“a2”}
/* 3 */ { “_id”:ObjectId(“55d5e7287e41390ea7e83a57”), “id”:“b”, “酷”:“b1”}
/* 4 */ { "_id" : ObjectId("55d5e7287e41390ea7e83a58"), “id”:“b”, “酷”:“b2”}
/* 5 */ { "_id" : ObjectId("55d5e7287e41390ea7e83a59"), “id”:“c”, “酷”:“c1”}
/* 6 */ { “_id”:ObjectId(“55d5e7287e41390ea7e83a5a”), “id”:“d”, “酷”:“d1”}
这是我的 MapReduce 函数:
db.Cool.mapReduce(
function(){emit(this.id, this.cool)},
function(key, values){
var res = [];
values.forEach(function(v){
res.push(v);
});
return {cools: res};
},
{out: "MapReduce"}
)
我想得到这样的结果:
/* 1 */ { “_id”:“一个”, “价值” : { “酷”:[ "a1", “a2” ] } }
但是在返回的集合中,有:
/* 1 */ { “_id”:“一个”, “价值” : { “酷”:[ "a1", “a2” ] } }
/* 2 */ { “_id”:“b”, “价值” : { “酷”:[ "b1", “b2” ] } }
/* 3 */ { “_id”:“c”, “价值”:“c1”}
/* 4 */ { “_id”:“d”, “价值”:“d1”}
问题是:为什么文档“id”:“a”(“id”:“a”的文档不止一个)和“id”:“c”的文档(只有一个"id":"c") 的一份文件
感谢您的任何建议,并为我的英语不好感到抱歉。
【问题讨论】:
标签: mongodb mapreduce mongodb-query aggregation-framework