2013-05-26 3 views
2

У меня есть следующий код:Mongojs - как нажать на массив?

db.users.save({ 
    username: "admin", 
    array: [{ 
      foo1: "foo1", 
      foo2: "foo2" 
     }, { 
      bar1: "bar1", 
      bar2: "bar2" 
     }, { 
      cell1: "cell1", 
      cell2: "cell2" 
     } 
    ] 
}); 

Теперь я хочу, чтобы обновить массив. Я хочу нажать что-то в массив:

db.users.update({ 
    username: admin 
}, { 
    $set: { 
     array: { 
      push1: "push1", 
      push2: "push2" 
     } 
    }, 


    function (err, updated) { 

Функция обновления не толкает. Так как я могу нажать на массив, так что результат будет:

[ 
    { foo1:"foo1", foo2:"foo2" }, 
    { bar1:"bar1", bar2:"bar2" }, 
    { cell1:"cell1", cell2:"cell2" }, 
    { push1:"push1", push2:"push2" } 
] 

ответ

6

Оператор $set будет, конечно, изменить все данные о array собственности.

Если вы хотите просто нажать, используйте $push (который нажимает на один элемент сразу) или $pushAll (что толкает все элементы массива).
Если вы хотите нажать, не повторяя предмет, используйте $addToSet.

Примечание: Если вы на MongoDB 2.4 (последняя версия), используйте $push с новым модификатором $each. Это осуждает использование $pushAll (это относится к $addToSet, тоже)

Документов: