2015-09-26 2 views
0

Есть ли более простой способ обновить текст поля в mongodb по всему миру?Как обновить значение поля во всем мире в mongodb

У меня нет знания MongoDB, но некоторые вещи, как это,

Update «всех коллекции, которые имеют field1» установить field1 = где некоторые field1 = 1234

Пожалуйста, обратите внимание на тузде решении, используя db отвалов: Как и для Find and replace in entire mysql database

Если выше не возможно, что лучше всего подходит для написания одноразового скрипта для переноса данных в mongodb? Это в среде Linux.

+1

Вы хотите, чтобы установить поле на то же значение во всех документах коллекции или это что-то более сложное? Пожалуйста, уточните, что вы хотите сделать. Неясные вопросы могут дать вам неопределенные ответы. – Philipp

+0

Спасибо, что посмотрели на него, я отредактировал для ясности. – Overture

ответ

2

Чтобы обновить несколько документов в одной и той же коллекции, используйте опцию multi:true когда вы делаете обновление:

db.collection.update(
    { "field1": 1234 }, 
    { "$set": { "field1" : somevalue } }, 
    { multi: true } 
); 

MongoDB не имеет команды, которые влияют на более чем одну коллекцию за один раз, так что вам придется выполнить это для каждой коллекции отдельно. Если вы хотите сделать это в оболочке, вы можете выполнить команду на каждой коллекции отдельно с помощью скрипта, например так:

db.getCollectionNames().forEach(function(name) { 
     db[name].update(
      { "field1": 1234 }, 
      { "$set": { "field1" : somevalue } }, 
      { multi: true } 
    ); 
}); 
Смежные вопросы