2013-07-15 48 views
0

根據mongodb文檔,stopOnError選項強制mongoimport在第一個錯誤時暫停導入操作,而不是在出現錯誤的情況下繼續操作。mongodb - mongoimport stopOnError選項

該選項適用的各種錯誤有哪些?

我測試了以下錯誤條件:

  1. 停止mongod的實例。我得到以下錯誤,指出它與mongodb失去連接。

    assertion: 10276 DBClientBase::findN: transport error: 127.0.0.1:15055 ns: admin.$cmd query: { getlasterror: 1 } 
    
  2. 再次將相同的文件導入到相同的數據庫和集合。這應該給我重複的輸入錯誤。儘管顯示錯誤,但是導入不會停止。

    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狀態?

回答

0

stopOnError顯式跳過了重複鍵錯誤,可以從https://github.com/mongodb/mongo/blob/master/src/mongo/tools/import.cpp#L314的源處看到。我已經提交了 https://jira.mongodb.org/browse/DOCS-1709以使文檔具體說明這一點。

+0

謝謝Sridhar。任何關於stopOnError工作的錯誤類型的想法?我只是想確定,如果我使用mongoimport而不是批量插入,那麼我會像getLastError一樣清楚地寫入提交確認。 – sonal

+0

呵呵,mongo導入代碼在每次插入後都會調用getLastError。謝謝。 – sonal