文档菜单
文档首页
/
MongoDB 手册
/

Map-Reduce

在本页

  • Map-Reduce JavaScript 函数
  • Map-Reduce 结果
  • 分片集合
  • 视图

注意

聚合管道作为替代方案

从 MongoDB 5.0 开始,map-reduce 已弃用

有关聚合管道替代map-reduce的示例,请参阅

Map-reduce是一种数据处理范式,用于将大量数据压缩成有用的聚合结果。要执行map-reduce操作,MongoDB提供了mapReduce数据库命令。

考虑以下map-reduce操作

Diagram of the annotated map-reduce operation.

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

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

注意

Map-reduce不支持MongoDB Atlas免费集群和MongoDB Atlas无服务器实例。

在MongoDB中,map-reduce操作使用自定义JavaScript函数来映射,或将值关联到键。如果一个键映射了多个值,操作将归约该键的值到单个对象。

自定义JavaScript函数的使用为map-reduce操作提供了灵活性。例如,在处理文档时,map函数可以创建多个键和值的映射,或者没有映射。map-reduce操作还可以使用自定义JavaScript函数在map和reduce操作结束时对结果进行最终修改,例如执行额外的计算。

在MongoDB中,map-reduce操作可以将结果写入集合或直接返回。如果您将map-reduce输出写入集合,您可以在同一输入集合上执行后续的map-reduce操作,合并替换、合并或归约新结果与之前的结果。有关详细信息和方法示例,请参阅mapReduce执行增量map-reduce

当以内联方式返回map-reduce操作的结果时,结果文档必须在BSON文档大小限制内,目前为16兆字节。有关map-reduce操作的限制和限制的更多信息,请参阅mapReduce参考页面。

MongoDB 支持在 分片集合 上执行 map-reduce 操作。

视图 不支持 map-reduce 操作。

返回

SQL 到聚合