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

时间:2015-06-17 01:18:41

标签: node.js 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期间,我似乎需要一种临时写入锁定整个数据库的方法。我唯一能找到的是db.fsyncLock,但它会锁定整个mongod,而不仅仅是我正在处理的数据库。

0 个答案:

没有答案