Mongojs - 如何推送阵列?

jul*_*ian 2 mongodb node.js mongojs

我有以下代码:

db.users.save({
    username: "admin",
    array: [{
            foo1: "foo1",
            foo2: "foo2"
        }, {
            bar1: "bar1",
            bar2: "bar2"
        }, {
            cell1: "cell1",
            cell2: "cell2"
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

现在我想更新数组.我的意思是推送一些东西进入数组:

db.users.update({
    username: admin
}, {
    $set: {
        array: {
            push1: "push1",
            push2: "push2"
        }
    },


    function (err, updated) {
Run Code Online (Sandbox Code Playgroud)

更新功能不推送.那么如何推送到数组,结果将是:

[
  { foo1:"foo1", foo2:"foo2" },
  { bar1:"bar1", bar2:"bar2" },
  { cell1:"cell1", cell2:"cell2" },
  { push1:"push1", push2:"push2" }
]
Run Code Online (Sandbox Code Playgroud)

gus*_*nke 6

$set运营商将,当然,改变整个数据array属性.

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

注意:如果您使用的是MongoDB 2.4(最新版本),请使用$pushnew $each修饰符.这不赞成使用$pushAll(这也适用于$addToSet)

文档: