mongodb:如何避免价值。* map / reduce之后

时间:2012-11-26 21:14:06

标签: mongodb format

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

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

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

如何为结果/输出集合选择此样式?

由于

1 个答案:

答案 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 }