MongoDB中map / reduce何时实际触发替换?

时间:2012-03-17 21:32:40

标签: mongodb

根据http://www.mongodb.org/display/DOCS/MapReduce的文档,当使用REPLACE out指令时,

  

输出将被插入到一个集合中,该集合将以原子方式替换任何具有相同名称的现有集合。

这是否意味着在M / R进程运行时将数据收集到临时集合中,然后最终进行某种重命名以替换先前的输出?

如果是这种情况,我可以运行常规批处理来更新集合,而不会冒任何时候它是空的(或只是部分满)的风险?

1 个答案:

答案 0 :(得分:0)

是。那是正确的。替换现在用于非分片输出的方式是它将获取写锁,删除旧数据库,并将临时集合重命名为输出集合并释放写锁。由于只有一个写锁定,因此基本上可以保证此操作是原子操作。但是,合并和减少不能说同样的。