2013-07-15 4 views
0

Согласно документации mongodb опция stopOnError заставляет mongoimport останавливать операцию импорта при первой ошибке, а не продолжать работу, несмотря на ошибки.mongodb - mongoimport stopOnError option

Каковы различные ошибки, для которых эта опция работает?

Я испытал это на следующих условиях ошибки:

  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 работает только для сетевых ошибок или ошибок записи? Есть ли способ установить проблемы с записью или получить статус getLastError при использовании mongoimport?

ответ

0

StopOnError явно пропускает повторяющуюся ошибку ключа, как видно из источника, по адресу https://github.com/mongodb/mongo/blob/master/src/mongo/tools/import.cpp#L314. Я указал https://jira.mongodb.org/browse/DOCS-1709, чтобы документация указала это.

+0

Спасибо Шридхар. Любая идея о различных типах ошибок, для которых работает stopOnError? Я просто хочу быть уверенным, что если я использую mongoimport вместо объемной вставки, я получу фиксацию write commit так же ясно, как getLastError. – sonal

+0

О, код импорта манго вызывает callLastError после каждой вставки. Спасибо. – sonal