2013-09-09 3 views
1

Есть ли способ обновить несколько элементов массива, встроенных в одно поле документа mongo?Обновление элемента множественного массива MongoDB

например:

db.exampleCollection.update({ 
    "_id" : "00000002522dde26c6d65aed", 
    "array.priority" : {$gt : 4} 
}, {$inc : {"array.$.priority" : 10} }, false, true); 

Это не обновляет несколько элементов, обновляет только один элемент

+1

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

+0

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

+0

Возможный дубликат [как обновить несколько элементов массива в mongodb] (http://stackoverflow.com/questions/4669178/how-to-update- multiple-array-elements-in-mongodb) – JohnnyHK

ответ

0

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

db.exampleCollection.update({ 
    "_id" : "00000002522dde26c6d65aed" 
}, { 
    $inc: { 
     "array.0.priority": 10, 
     "array.1.priority": 10 
    } 
}, false, true); 

Я знаю, что вы пытаетесь предназначаться элементами, где priority > 4, а не по индексу, но это суровая реальность.

+0

:) спасибо ... –

+0

Кто-нибудь знает, есть ли способ сделать это более лаконично, если обновить несколько смежных полей? Обозначение в виде среза было бы приятным - т.е. $ inc: {"array.0: 10.priority": 10}, чтобы увеличить все значения в позициях от 0 до 10 –