mongodb阅读,复制,处理和删除

时间:2014-02-12 15:27:29

标签: mongodb

我必须编写一个应用程序,不断轮询给定数据库中的mongodb db集合。如果它找到它们读取的文件,则将它们复制到另一个数据库,进行一些额外处理并从原始数据库中删除它们。

实施此方法的最有效方法是什么?什么是最佳实践?

一次处理一个文档是否更好:阅读一个文档,复制文档然后删除它 或者更好地阅读所有文件,复制所有文件,然后删除所有文件?

在其中一个读取,写入删除过程中处理故障的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

批量读取,插入和删除几乎总是比单个文档操作更高效。但是尝试将其限制为最大数量的文档,例如在我们的设置中,500似乎是最佳的。

对于处理错误,您可以使用以下伪事务模式:

  1. findAndModify,同时为所有阅读文档设置“state”:“pending”
  2. 流程文档
  3. 批量插入
  4. 删除所有带有“州”的文件:“待定”
  5. 如果处理部件或批量插入中出现问题,您可以解锁所有锁定的文档,然后重试。

    可以在MongoDB教程中找到这类伪造事务的更详细的例子: http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/