Массовое обновление/upsert в MongoDB?

Можно ли выполнять массовое обновление/upsert (не вставлять) в MongoDB?

Если да, укажите мне какие-либо документы, связанные с этим?

Спасибо


person StackUnderflow    schedule 14.12.2010    source источник
comment
Это пока невозможно: см. jira.mongodb.org/browse/SERVER-4004.   -  person Gianfranco P.    schedule 29.08.2013


Ответы (3)


Вы можете использовать программу командной строки mongoimport, она должна быть в вашем каталоге bin MongoDB...

Есть два варианта использования upsert...

--upsert вставить или обновить уже существующие объекты
--upsertFields arg поля с разделителями-запятыми для части запроса upsert. Вы должны убедиться, что это проиндексировано

Дополнительная информация здесь: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Или просто сделать...

$ mongoimport --help
person Justin Jenkins    schedule 14.12.2010
comment
Примечание: в настоящее время --upsert не задокументирован в онлайн-документах (их необходимо обновить) ... но вы увидите его из командной строки --help. - person Justin Jenkins; 15.12.2010

mongo может выполнить .js файл. вы можете поместить все команды обновления в файл js.

t.js

db.record.update({md5:"a35f10a8339ab678612d1f86be08b81a"},{$set:{algres:[]}},false,true);
db.record.update({md5:"a35f10a8339ab678612d1f86be08b81b"},{$set:{algres:[]}},false,true);

тогда mongo 127.0.0.1/test t.js

person unique    schedule 03.07.2015

Массовые обновления также можно выполнять партиями, как указано в документации:

Массовые методы MongoDB

Я использую их для импорта файлов CSV, которые мне нужно немного помассировать перед импортом данных. Это довольно медленно при работе с обновлениями, но мои 50 000 обновлений документов были обновлены примерно за 83 секунды, что намного медленнее, чем команда mongoimport.

person britztopher    schedule 08.12.2014