2016-11-14 2 views
0

У меня есть коллекция с именем тест выглядит следующим образом JSON:толкать элементы в массив

{ 
    '_id':ObjetcId("..."), 
    'a':[ 
     { 
      id:1, 
      a1:[{x:1,y:1},{x:10,y:11},{x:10,y:12}], 
      flag:1 
     }, 
     { 
      id:2 
      a1:[{x:1,y:1},{x:10,y:11},{x:10,y:12}], 
      flag:0 
     }, 
     ] 
} 

Теперь я хочу, чтобы вытолкнуть другой ({x:99,y:99}) элемент в a.a1 с условием, что a.id=1, я попробовал команду:

db.test.update({'_id':ObjectId('...')},{"$push":{"a.a1":{x:99,y:99}}}) 

и вернуть сообщение об ошибке, которое не может использовать деталь (a.a1) для перемещения элементов, поэтому как добавить элемент в массив?

+0

Вы имеете в виду подталкивание ко всем a.a1? – kiro112

+0

@ kiro112 нет для всех, с условием a.id = 1 – HaiFengZeng

+0

@ kiro112 он работает! Спасибо,^_ ^. – HaiFengZeng

ответ

1

mongodb positional/$ Оператор positional $ идентифицирует элемент в массиве для обновления без явного указания положения элемента в массиве. Чтобы спроектировать или вернуть элемент массива из операции чтения, см. Оператор $ проекции.

db.test.update({ 
    _id: ObjectId('...'), 
    "a.id": 1 
}, { 
    $push: { 
     "a.$.a1": { x: 99, y: 99 } 
    } 
}) 
Смежные вопросы