2016-03-30 1 views

ответ

4

Если вы хотите применить обновление для каждого документа в коллекции, используйте {multi:true} вариант

db.collection.update({},{$set: {'column' : 'value'}},{multi:true}); 

Более подробно см collection.update

Однако, если вы хотите обновить выбранное количество документов, вы будете использовать более длительный маршрут.

db.collection.find().limit(10).forEach(function(o){ 
    o.column = some_value; // replace some_value with real one. 
    db.collection.update({_id:o._id},o); 
}); 
+0

спасибо за ответ, но я получил эту ошибку:. Db.collection.find (...) предел (...) обновление не является функцией:. –

+0

нет, она не работает таким образом. Мне жаль, что я наклеил вашу команду так, как есть. попробуй. – Saleem

+0

@saleem, ОП запрашивает многократное обновление с ограничением. Обновление, которое у вас есть, обновит каждый документ в коллекции и не будет корректным синтаксисом либо с первого аргумента, который должен быть селектором запросов, а не с тем, что нужно обновить. – Ben

0

По умолчанию он обновляет только первый найденный документ. Вам нужно добавить multi = true в качестве опции update() для обновления всех. К сожалению, обновление() не имеет предела вариант, так что вы можете ограничить его до 10.

Вы могли бы сделать поиск() с лимитом первым, а затем обновлять каждый документ отдельно, как упомянуто в этом посте:

How to limit number of updating documents in mongodb

Смежные вопросы