2014-10-28 4 views
1

Я изучаю Метеор, и мне трудно понять MongoDB. У меня есть коллекция под названием меню, который выглядит следующим образом:Вставить объект в многомерный массив в Meteor MongoDB

 
    id:123, 
    cat:'starters', 
     details:{[ 
     item:'nachos', 
     price:'3.99', 
     desc:'chips & queso' 
     ]} 

Я хотел бы добавить еще один элемент в этой коллекции равна:

 
    id:123, 
    cat:'starters', 
    details:{[ 
     item:'nachos', 
     price:'3.99', 
     desc:'chips & queso' 
    ],[ 
     item:'calamari', 
     price:'4.99', 
     desc:'fried calamari' 
]} 

Мой код выглядит следующим образом:

Menu.upsert({_id:'123'},{$push:{details:[{item:'calamari'},{price:'4.99'},{desc:'fried calamari'}]}}); 

Я также пробовал использовать «обновление», но я просто получаю сообщение «Невозможно применить модификатор $ push для не-массива» для обоих.

ОБНОВЛЕНИЕ Спасибо, Синдис, вы были правы, и я смог получить эту работу.

Я создал новую коллекцию под названием Menu2, как это.

 
    id:54, 
    cat:'starters, 
    details:[{ 
     item:'nachos' 
     price:'3.99' 
     }] 

Затем используется "обновление", как предложено:

Menu2.update({id:'54'},{$push:{details:{item:'calamari',price:'4.99'}}}); 

И я получил это!

 
    id:54, 
    cat:'starters', 
    details:[{ 
     item:'nachos', 
     price:'3.99' 
    },{ 
     item:'calamari', 
     price:'2.99' 
    }] 

ответ

0

Не тестировался, но я думаю, что это должно выглядеть следующим образом:

Menu.upsert({_id:'123'},{$push: {details: {item:'calamari', price:'4.99', desc:'fried calamari'}}}); 

отдельных участков объекта ваших толкающий не нужен окружающий объектом и обновление/upsert уже ожидает объект, чтобы войти в массив, поэтому нет необходимости в квадратных скобках.

http://docs.mongodb.org/manual/reference/operator/update/push/

+0

Спасибо, однако, за ваш ответ; все еще не повезло, я получаю ту же ошибку. – user3280456

+1

Для этого определение деталей должно быть [], а не {}. Итак, первая запись должна быть такой: 'детали: [{ item: 'nachos', цена: '3.99', desc: 'chips & queso' }]'. Теперь вы создали массив, и вы можете нажимать на него объекты, {} - это просто объект в Mongo, если я прав. О, а также попробуйте обновить его, а не обновить. – Sindis

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