根据mongodb文档,stopOnError选项强制mongoimport在出现第一个错误时停止导入操作,而不是在出现错误的情况下继续操作。
此选项适用的各种错误是什么?
我已经针对以下错误条件对其进行了测试:
-
已停止mongod实例。我得到以下错误,表明它丢失了和mongodb的连接。
assertion: 10276 DBClientBase::findN: transport error: 127.0.0.1:15055 ns: admin.$cmd query: { getlasterror: 1 }
-
再次将同一文件导入到同一数据库和集合中。这应该会给我重复输入错误。尽管显示了错误,但导入不会停止。
Mon Jul 15 16:28:40.652 E11000 duplicate key error index: users.contacts_2.$_id_ dup key: { : "xexjiroiqcwujiuxrmedntmxhalniwygdyplrfvkjvfugdvxpadfvpferqtaquht" } Mon Jul 15 16:28:40.652 check 9 11 Mon Jul 15 16:28:40.652 E11000 duplicate key error index: users.contacts_2.$_id_ dup key: { : "uyioegyqcenijjickljgdpmvihvyefvyfenjkmcptqafalhmwrvbjkwrtutybpxg" } Mon Jul 15 16:28:40.652 imported 10 objects
现在,我很困惑。stopOnError只适用于网络错误还是也适用于写入错误?有没有什么方法可以在使用mongoimport时设置写问题或获取getLastError状态?
stopOnError显式跳过重复的键错误,可以从https://github.com/mongodb/mongo/blob/master/src/mongo/tools/import.cpp#L314.我已提交https://jira.mongodb.org/browse/DOCS-1709让文档指定这一点。