恢复到活动的MongoDB数据库时,索引发生冲突

定期当我们做一个mongorestore我们正在获取索引约束的错误。 最初,在还原数据库时,您可能会遇到索引错误,但似乎完全不可能,但看起来根本原因是操作期间的mongorestore产量。 这允许通过恢复用户插入密钥上的项目,因此当索引被应用到最后时,它会出错。

下面是一个例子,可以想象我们有一个集合foo在“标题”上有一个唯一的索引。

 mongorestore --host myDb --db foo --drop auth // foo is dropped // RESTORE: foo.insert({ title : "A" }); // RESTORE: foo.insert({ title : "B" }); // restore yields to insert // USER: foo.insert({ title : "C" }); // user yields back to restore // RESTORE: foo.insert({ title : "C" }); // RESTORE: foo.ensureIndex({ title : 1 }, { unique : true }) -- ERROR E11000 duplicate key error index: foo.data.$title_1 

无论如何要防止在一个mongorestore这个? 看来我需要在mongorestore临时写入locking整个数据库的mongorestore 。 我唯一能find的就是db.fsyncLock但它locking了整个mongod ,而不仅仅是我正在处理的数据库。