2

我有以下代码:

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" }
]
4

1 回答 1

6

$set操作员当然会更改属性的全部数据array

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

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

文件:

于 2013-05-26T16:14:00.107 回答