使用mongoDB使用mapreduce后,我担心结果是“二维”而不是平面文档。
即。文档看起来像{id:...,value:{test:123}}
相反,我更喜欢这种格式:{...,test:123}
如何为结果/输出集合选择此样式?
由于
答案 0 :(得分:0)
MongoDB map / reduce作业的输出集合将始终具有
的顶级结构{_id: <something>, value: <something> }
也就是说,它始终是一个带有两个键的文档。如果你想让'value'成为单个值,你可以通过控制emit()和reduce()函数来实现。
这是一个emit()函数,它将为'value'发出一个值:
emit() { this.date, 1 }
这是一个reduce()函数,它将返回'value'的单个值:
reduce() {
var count = 0;
values.forEach(function(v) {
count += v;
});
return count;
};
请记住:emit() 必须 发出的文档的“形状”与reduce()返回的文档的“形状”相同。
如果这样做,输出集合中的文档将如下所示:
{ _id: ISODate("2012-11-27T00:27:41.103Z"), value: 99 }