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(一度に 1 つのアイテムをプッシュする) または$pushAll(配列のすべてのアイテムをプッシュする) を使用します。
項目を繰り返さずに押したい場合は、 を使用します$addToSet

注: MongoDB 2.4 (最新バージョン) を使用$pushしている場合は、 new$each修飾子を使用してください。これは の使用を非推奨にします$pushAll(これは にも当てはまり$addToSetます)

ドキュメント:

于 2013-05-26T16:14:00.107 に答える