mongodb - 如何更改 MongoDB mapreduce 结果的结构?

标签 mongodb mapreduce

当我在 Mongo 数据库上运行 Map-Reduce 时,我通常会得到类似于以下的结果:

{ _id: <some-id>, value: { <first-key>: <first-value>, ... } }

有没有办法省略 value: { ... } 部分,直接在结果中插入 value 的内容?基本上,我希望得到如下所示的结果:

{ _id: <some-id>, <first-key>: <first-value>, ... }

这样我可以将结果合并回一个遵循这种格式的现有集合中。

我还有一个关于 Map-Reduce 的问题:是否可以通过 mapreduce 函数访问另一个集合?

最佳答案

MapReduce 只返回 {_id:some_id, value:some_value} 形式的文档

“some_value”不一定是嵌入文档,但在大多数情况下是允许Map Reduce函数计算多个变量。 Reduce 函数返回的文档必须与输入的格式相同,因为对于任何给定的 _id 值,Reduce 函数可能会重复运行。

有关 Map Reduce 工作原理的分步说明,请参阅 MongoDB Cookbook 配方的“附加”部分,标题为“使用版本化文档查找最大值和最小值”http://cookbook.mongodb.org/patterns/finding_max_and_min/这应该可以更好地理解 Map Reduce 的工作原理,以及为什么输出必须采用 {_id:some_id, value:some_value}

格式

可以做一个增量 Map Reduce,它将合并多个 Map Reduce 函数的结果。 http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce

最后,目前无法使用 Map Reduce 一次访问多个集合。此功能有一个功能请求,但未计划添加到任何即将发布的版本中。
https://jira.mongodb.org/browse/SERVER-970

关于mongodb - 如何更改 MongoDB mapreduce 结果的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416262/

相关文章:

javascript - updateOne 删除我的数据

node.js - MongoDB:如何使用一个模式作为不同文件中定义的不同集合的子文档

hadoop - Log4j 不写入 HDFS/Log4j.properties

java - MongoDB MapReduce 比纯 Java 处理慢很多?

c# - Xunit 测试不适用于 mongodb 服务

ruby-on-rails - Mongoid 和查询嵌入式位置?

mongodb - React - 如何在将数据发布到数据库(mongodb)后重新渲染组件

java - 在 hadoop mapreduce 作业中插入连接到数据库时出现异常

matlab - 如何在调用mapreduce函数时将参数传递给map函数?

javascript - 返回某种类型的有限数量的记录,但返回无限数量的其他记录?