我正在学习Meteor,我很难理解MongoDB。我有一个名为Menu的集合,如下所示:
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 :(得分: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/