我正在应用 map reduce 功能,但面临一个问题。如果只有一条记录,它会返回 id 而不是 count = 1。
map_func = """function () {
emit(this.school_id, this.student_id);
}"""
reduce_func = """
function (k, values) {
values.length;
}
"""
如果学校 100 只有一个学生,那么它应该返回学校 ID 100,值 =1,但在这种情况下,它返回学校 ID = 100,值 = 12(12 是它在 db 中的学生 ID)。对于其他记录,它工作正常。
map_func = """function () {
emit({this.school_id, this.student_id},{count:1});
}"""
reduce_func = """
function (k, values) {
var count =0 ;
values.forEach(function(v)
{
count += v['count'];
});
return {count:count};
}
"""
map_func2 = """
function() {
emit(this['_id']['school_id'], {count: 1});
}
"""
http://cookbook.mongodb.org/patterns/unique_items_map_reduce/ 我使用了这个例子,但它使用了两个 maps-reduce 函数,所以需要更多时间。