2012-05-11 2 views
2

Я использую официальный драйвер Mongodb C#. Я хочу изменить определенное значение в массиве с некоторым другим значением. Массив содержит список значений. Напр.Заменить значение в массиве

{ 
    _id: id1, 
    values: [23, 78, 20] 
} 

Я хочу предположить, чтобы заменить 23 на 25. Я знаю один ответ, если это правильно. Сначала я вытаскиваю этот элемент, а затем нажимаю другой. Но проблема в том, что если элемент отсутствует, то и push будет вставлять элемент. Во-вторых, он изменит положение и введет элемент в конце. Скажите, пожалуйста, как это сделать.

+0

Читайте о позиционном операторе –

+0

Я прочитал, но все примеры об увеличении значения. –

+0

ну, swap '$ inc' за' $ set', и вам хорошо идти. –

ответ

5

Вы должны использовать это:

db.collection.update({_id: id1, values: 23}, {$set: {'values.$': 25}}) 
+0

Думаю, вам нужно добавить '_id' к этому ответу. В противном случае вы обновите первый документ с «значением» из 23, что вам не нужно. –

+0

@GatesVP: Конечно, вы правы. Спасибо :) –

+0

@GatesVP: Спасибо, что работает. Но что делать, если я хочу, чтобы каждое появление 23 было заменено определенным числом. $ работает для первого совпадения. –

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