【发布时间】:2012-09-26 11:18:03
【问题描述】:
您好,我要做的就是获取每个不同部门类型的计数:
fnMap = function() {
emit(this.departments.departmentType, {typeCount:1} );
}
fnReduce = function(key, values) {
var result = {typeCount: 0};
values.forEach(function(value) {
result.typeCount += value.brandCount;
});
return result;
};
var command = {
mapreduce : "clients",
query : {"departments.departmentType": {$exists: true}},
map : fnMap.toString(),
reduce : fnReduce.toString(),
//sort: {"departments.departmentType":1},
out: {inline: 1}
};
mongoose.connection.db.executeDbCommand(command, function(err, dbres) {
});
执行该命令时,dbres.documents[0].results 仅包含 1 个项目的部门类型总数,而不是每个部门类型一个及其计数的多个项目。
任何想法我做错了什么?
另外,当我取消注释 SORT 行时,我收到错误“db assertion failure: could not create cursor over...”,我相信字段名称写正确。
【问题讨论】:
-
reduce 中的brandCount 是什么?看起来像一个错字。应该是 typeCount
-
我会在我的答案中添加更正后的 mapReduce,以防万一它有帮助,但您在这里不需要 mapReduce。
标签: mongodb mapreduce grouping mongoose