2012-04-30 5 views
8

Я хочу добавить несколько элементов в массивы нескольких строк в Mongo. Как я могу это сделать?Обновление MongoDB (вставка списка элементов в массив)

Я хочу начать с этого:

{'x': 'h', arr: [1,2,3] } 
{'x': 'h', arr: [1,3] } 

и добавить массив [6,8], где х равно 'ч':

{'x': 'h', arr: [1,2,3,6,8] } 
{'x': 'h', arr: [1,6,8] } 

ответ

11

Я думаю, что вы ищет оператор $ pushAll. Посмотрите здесь:

http://docs.mongodb.org/manual/reference/operator/pushAll/#pushall

+3

Похоже, что монгольцы реорганизовали свои документы. Прямая ссылка здесь: http://docs.mongodb.org/manual/reference/operator/pushAll/#_S_pushAll –

8

Если у вас есть коллекция MongoDB с именем yourCollection и запись с именем x, вы бы обновить подмассив с чем-то вроде этого:

db.test. обновление ({ "имя": "х"}, { "$ pushAll": {обр: [1, 2, 3]}})

важным ключевым словом здесь является $pushAll. Вы можете использовать его для добавления элементов в массивы внутри одного атрибута записи.

+2

Устаревшая версия 2.4. Используйте $ each вместо –

1

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

db.test.update({"name": "x"}, {"$pushAll": {"arr": [1, 2, 3]}}, false, true) 

Per синтаксисе MongoDB оболочки для обновления():

db.collection.update(criteria, objNew, upsert, multi) 
  • upsert - если запись (и) не существует, вставьте один. Upsert вставляет только единый документ
  • многоплатформенный - указывает, что все документы, соответствующие критериям, должны быть обновлены, а не только один
1

простейшего подхода является использование обычной операции обновления

db.urColl.update(
    { x: "h" }, 
    { $push: { arr: { $each: [6,8] } } }, 
    { multi: true } 
);` 
0

$pushAll
Устаревший с версии 2.4: вместо этого используйте оператор $push с $each.

Оператор $pushAll добавляет указанные значения в массив.

$pushAll оператор имеет вид:

{ $pushAll: { <field>: [ <value1>, <value2>, ... ] } } 

Если указать одно значение, $pushAll будет вести себя как $push.

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