2013-05-26 32 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,太)

文档: