Docs 菜单
Docs 主页
/
MongoDB Manual
/

Map-Reduce

在此页面上

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

注意

聚合管道作为替代方案

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

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

map-reduce 是一种数据处理范例,用于将大量数据压缩为实用的聚合结果。如要执行 map-reduce 操作,可以使用 MongoDB 提供的 mapReduce 数据库命令。

请考虑以下 map-reduce 操作:

带注释的 map-reduce 操作图。

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

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

注意

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

在 MongoDB 中,map-reduce 操作使用自定义 JavaScript 函数将值映射或关联到键。如果某个键映射了多个值,则该操作会将该键的值减少为单个对象。

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

在 MongoDB 中,map-reduce 操作可以将结果写入集合或以内联方式返回结果。如果将 map-reduce 输出到写入集合,则可以对同一输入集合执行后续 map-reduce 操作,将新结果与以前的结果合并替换、合并或减少。有关详细信息和示例,请参见 mapReduce执行增量 Map-Reduce

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

MongoDB 支持分片集合上的 map-reduce 操作。

视图不支持 map-reduce 操作。

后退

SQL 到聚合