Map-Reduce

在本页面

Map-reduce 是一种数据处理范例,用于将大量数据压缩为有用的“汇总”结果。对于 map-reduce 操作,MongoDB 提供了mapReduce数据库命令。

请考虑以下 map-reduce 操作:

带 Comments 的 map-reduce 操作图。

在此 map-reduce 操作中,MongoDB 将* map 阶段应用于每个 Importing 文档(即集合中与查询条件匹配的文档)。 map 函数发出键-值对。对于具有多个值的那些键,MongoDB 应用 reduce 阶段,该阶段收集并压缩聚集的数据。然后,MongoDB 将结果存储在集合中。可选地,reduce 函数的输出可以通过 finalize *函数来进一步压缩或处理聚合结果。

MongoDB 中的所有 map-reduce 函数都是 JavaScript,并在mongod进程中运行。 Map-reduce 操作将单个collection的文档作为* input *,并且可以在开始 map 阶段之前执行任意排序和限制。 mapReduce可以将 map-reduce 操作的结果作为文档返回,也可以将结果写入集合。Importing 和输出集合可以分片。

Note

对于大多数聚合操作,Aggregation Pipeline提供了更好的性能和更一致的界面。但是,map-reduce 操作提供了一些聚合管道中当前不可用的灵 Active。

Map-Reduce JavaScript 函数

在 MongoDB 中,map-reduce 操作使用自定义 JavaScript 函数将值* map *或关联到键。如果一个键具有 Map 到它的多个值,则该操作会将键的值“减少” *到单个对象。

自定义 JavaScript 函数的使用为 Map 减少操作提供了灵 Active。例如,在处理文档时,Map 功能可以创建多个键和值 Map,也可以不创建任何 Map。 Map-reduce 操作还可以使用自定义 JavaScript 函数在 Map 末尾对结果进行最终修改,并进行 reduce 操作,例如执行其他计算。

Map-Reduce Behavior

在 MongoDB 中,map-reduce 操作可以将结果写入集合或内联返回结果。如果将 map-reduce 输出写入集合,则可以在同一 Importing 集合上执行随后的 map-reduce 操作,这些操作将替换结果,合并结果或归约结果与先前结果合并。有关详细信息和示例,请参见mapReduce执行增量 Map-减少

返回 map-reduce 操作* inline *的结果时,结果文档必须在BSON 文件大小的限制内,当前限制为 16 兆字节。有关 Map 减少操作的限制的更多信息,请参见mapReduce参考页。

MongoDB 支持对sharded collections的 map-reduce 操作。 Map-reduce 操作还可以将结果输出到分片集合。参见Map-Reduce 和分片集合

Views不支持 map-reduce 操作。