2013-10-09 3 views
1

Требование: Получить все документы, где точка < 90 и приращение 'точки' от +20 данных:MongoDB: Мульти Обновление с условием где

{ "_id" : 1, "student" : 1, "type" : "exam", "point" : 115 } 
    { "_id" : 2, "student" : 2, "type" : "exam", "point" : 85 } 
    { "_id" : 3, "student" : 3, "type" : "exam", "point" : 115 } 

Query tried : 
// query below 

db.points.update ({}, {$ вкл: {точка: 20}, точка: {л: 110}}, {несколько: истинно})

On executing : fn[0] == '$'is seen and query has not affected any changes. 

ответ

1

Вы можете написать запрос следующим образом:

db.points.update({point:{$lt:110}},{$inc:{point:20}},false,true) 
+0

Не могли бы вы объяснить использование логических значений false и true. – user556698

+0

Третий параметр используется для upsert (insert, если не существует), а последний параметр - для нескольких обновлений. Вы можете прочитать подробности в этом документе: http://docs.mongodb.org/manual/reference/method/db.collection.update/ –

0

Ther не е нет, где условия в вашем обновлении

db.points.update ({точка: {$ л: 90}}, {$ вкл: {точка: 20}}, {много: истинный})

point: {$ lt: 90} выбирает только документы, где значение в точке ниже 90 и увеличивается на 20

+0

Работы ... Я пропустил инкапсуляцию второго условия в {} или в основном документ . У нас есть лучший редактор, чем основная консоль mongo? – user556698

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