Mongojs - 如何推送阵列?

时间:2013-05-26 16:04:02

标签: node.js mongodb 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" }
]

1 个答案:

答案 0 :(得分:6)

$set运算符当然会更改array属性的整个数据。

如果您只想推,请使用$push(一次推送一个项目)或$pushAll(推送数组的所有项目)。
如果您想在不重复项目的情况下进行推送,请使用$addToSet

注意:如果您使用的是MongoDB 2.4(最新版本),请将$push与新的$each修饰符一起使用。这会弃用$pushAll的使用(这也适用于$addToSet

文档: