在使用 mongoDB 使用 mapreduce 之后,我担心结果具有“二维”而不是平面文档。
即文件看起来像 {id:..., value:{test:123}}
相反,我更喜欢这种格式: {...,test:123}
如何为结果/输出集合选择这种风格?
谢谢
MongoDB map/reduce 作业的输出集合将始终具有顶级结构
{_id: <something>, value: <something> }
也就是说,它将始终是具有两个键的文档。如果你想让“值”是一个单一的值,你可以通过控制你的 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 }