Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs 菜单
Docs 主页
/ /

Map-Reduce

注意

聚合管道作为替代方案

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

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

您可在用户界面中为 MongoDB Atlas 中托管的部署运行聚合管道

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

请考虑以下 map-reduce 操作:

带注释的 map-reduce 操作图。

MongoDB将映射阶段应用于每个输入文档(集合中与查询条件匹配的文档)。 map 函数会发出键值对。对于具有多个值的键, MongoDB会应用化简阶段,该阶段会收集并压缩数据,然后将结果存储在集合中。 reduce 函数的输出可以选择通过 finalize 函数来进一步进程结果。

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

注意

MongoDB Atlas免费版和 Flex 集群不支持 Map-reduce。

Map-reduce 操作使用自定义JavaScript函数将值映射到键。如果键有多个值,则该操作会将它们减少为单个对象。映射函数可以发出多个键值对,也可以不发出。可选的 finalize 函数可以对结果进行进一步修改。

map-reduce操作可以写入结果写入集合,也可以以内联方式返回结果。如果将结果写入集合,则可以对同一输入集合运行后续map-reduce操作,将新结果替换、合并或减少为以前的结果。有关示例,请参阅mapReduce 和执行增量 Map-Reduce。

以内联方式返回结果时,结果文档必须符合 MB 的BSON文档大小限制。有关更多限制和限制,请参阅 16mapReduce

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

视图不支持 map-reduce 操作。

后退

SQL 到聚合

在此页面上