1

在使用 mongoDB 使用 mapreduce 之后,我担心结果具有“二维”而不是平面文档。

即文件看起来像 {id:..., value:{test:123}}

相反,我更喜欢这种格式: {...,test:123}

如何为结果/输出集合选择这种风格?

谢谢

4

1 回答 1

0

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 }
于 2012-11-27T00:28:17.747 回答