当我在 Mongo 数据库上运行 Map-Reduce 时,我通常会得到类似于以下的结果:
{ _id: <some-id>, value: { <first-key>: <first-value>, ... } }
有没有办法省略 value: { ... }
部分,直接在结果中插入 value
的内容?基本上,我希望得到如下所示的结果:
{ _id: <some-id>, <first-key>: <first-value>, ... }
这样我可以将结果合并回一个遵循这种格式的现有集合中。
我还有一个关于 Map-Reduce 的问题:是否可以通过 map
或 reduce
函数访问另一个集合?
最佳答案
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/