Mongorestore如果没有--drop已经存在则更新记录

时间:2014-09-22 06:32:35

标签: mongodb database-backups

我有大量的数据收集,我必须每周末转移到另一台机器。所以我计划进行增量备份和恢复。经过实验,如果_id已经存在,mongorestore永远不会合并数据。 基于上述问题,我尝试使用mongoimport并导出但存在同样的问题,因为现有记录未合并。任何可能的解决方案都会有所帮助。

  由:: 11000 E11000重复密钥引起的mongoimport命令中的

错误   错误索引:news.news_data。$ id dup key:{:   ObjectId(' 5404410d9f5323ef734dac68')}

2 个答案:

答案 0 :(得分:13)

第一种情况是真的。 Mongorestore如果已存在则不更新文档。它在恢复时会贬低那些文件。 在第二种情况下,请尝试使用带有--upsert选项的mongoimport。如果_id已存在,它将合并记录。

前:

mongoimport --db dbname --collection collname --upsert --file file.json

答案 1 :(得分:1)

这是一个老问题,但我们找到了一个很好的解决方法:

  1. 从服务器A(原始)转储集合
  2. 从服务器B(目标)转储集合
  3. 使用服务器B 4上的Drop Collection A进行还原
  4. 在服务器B上恢复不丢弃集合B
  5. 在这种情况下,更新的文档不会被覆盖

    无论如何,在MongoDB Jira门票TOOLS-121

    上投票