mongo 的 MR 可以将结果写入另一个分片集合吗?

Posted

技术标签:

【中文标题】mongo 的 MR 可以将结果写入另一个分片集合吗?【英文标题】:Can mongo's MR write the result to another sharded collection? 【发布时间】:2012-05-07 21:07:06 【问题描述】:

根据 Mongo MR 文档 (http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-ShardedEnvironments),分片数据上的 MR 作业的输出可以将结果写入另一个分片集合,但是只有 _ID 可以用作分片键。

有没有办法发出或设置将分配给结果文档的_ID?说使用 UserID 或 CustomerNo 本身用作分片键?

【问题讨论】:

【参考方案1】:

Map-Reduce 生成的文档中的_id 与您在映射阶段在emit(...) 中使用的键相同。它可以是任何类型,包括(子)文档,但在最终文档中始终以_id 字段的形式出现。

如果您的目标(分片)集合使用 ObjectId 以外的某个自定义值作为 _id 的值,则可以使用分片 map-reduce 并将输出输出到该集合。

sharded map-reduce 也有一些限制,特别是 map-reduce 不会触发拆分或迁移,并且不支持 limit 选项。

【讨论】:

以上是关于mongo 的 MR 可以将结果写入另一个分片集合吗?的主要内容,如果未能解决你的问题,请参考以下文章

搭建MongoDB副本集&分片

mongo分片丢失分片索引

MongoDB: 分片sharding

MongoDB分片

MongoDB分片

MongoDB分片管理