在Meteor MongoDB中将对象插入到多维数组中

时间:2014-10-28 17:16:01

标签: javascript mongodb multidimensional-array meteor

我正在学习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'
    }]

1 个答案:

答案 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/