2016-11-20 3 views
1

Я пытаюсь обновить одно поле в каждом документе в своей коллекции, используя csv и Mongoimport с включенным -upsert. Однако процесс удаляет все остальные поля в документе.MongoDB: используйте MongoImport с csv для обновления только одного поля

У меня есть коллекция книг с документами, как:

{ 

    "_id" : "knOIv8ZUUK", 
    "Price" : 2.2, 
    "Title" : "Rats Ahoy" 
} 

{ 

    "_id" : "okYEGuWznv", 
    "Price" : 3.3, 
    "Title" : "Friendly Fish" 
} 

CSV файл:

_id,Price 

knOIv8ZUUK,2.2 

okYEGuWznv,3.3 

И импорт с помощью:

mongoimport --db local --collection Books --upsert --type csv 
      --headerline --file c:\import\newPrice 

С результатами удаления поля заголовка

{ 

    "_id" : "knOIv8ZUUK", 
    "Price" : 2.2 
} 

{ 

    "_id" : "okYEGuWznv", 
    "Price" : 3.3 
} 

Я, неправильно, подумал, что Upsert просто обновит импортированное поле. Итак, есть ли другой процесс, который я могу использовать для обновления всего одного поля в большом количестве документов? благодаря

+0

Привет @MarkM, были вы можете решить? Пожалуйста, поделитесь решением, если бы вы были. Спасибо! –

ответ

0

Новая функция была добавлена, начиная с версии 3.4 Documentation here.

Проверьте эту опцию

--mode insert|upsert|merge 

В вашем случае вы можете использовать это может быть:

--mode merge 
Смежные вопросы