Map-reduce支持对分片集合的操作,既可以作为输入,也可以作为输出。本节描述mapReduce
特定于分片集合的行为
。
但是,从4.2版开始,MongoDB弃用map-reduce选项以创建新的分片集合,以及使用该
sharded
选项进行map-reduce。要输出到分片集合,请首先创建分片集合。MongoDB 4.2还不建议替换现有分片集合。
如果的out
字段mapReduce
具有sharded
值,则MongoDB使用该_id
字段作为分片键对输出集合进行分片。
注意
从4.2版开始,MongoDB不赞成使用
/ sharded
选项
。mapReduce
db.collection.mapReduce
要输出到分片集合:
如果输出集合不存在,请首先创建分片集合。
从版本4.2开始,MongoDB弃用map-reduce选项以
创建新的分片集合,并将该sharded
选项用于map-reduce。因此,要输出到分片集合,请首先创建分片集合。
如果您没有首先创建分片集合,则MongoDB会在_id
现场创建和分片集合。但是,建议您首先创建分片集合。
从4.2版开始,MongoDB不赞成替换现有的分片集合。
从版本4.0开始,如果输出集合已存在但未分片,则map-reduce失败。
对于新的或空的分片集合,MongoDB使用map-reduce操作的第一阶段的结果来创建在分片之间分布的初始 块。
mongos
并行地将映射减少后处理作业分派给拥有块的每个分片。在后处理期间,每个分片将从其他分片中提取其自身块的结果,运行最终的reduce / finalize,然后本地写入输出集合。
注意