45

1 回の呼び出しを使用して、複数の値を mongoose の配列にプッシュする必要があります。小さい配列を使用して実行しようとしましたが、配列がサブ配列として挿入されています。

var kittySchema = new mongoose.Schema({
        name: String,
        values: [Number]
});

var Kitten = db.model('Kitten', kittySchema);
Kitten.update({name: 'fluffy'},{$push: {values:[2,3]}},{upsert:true},function(err){
        if(err){
                console.log(err);
        }else{
                console.log("Successfully added");
        }
});

上記のコードを 3 回呼び出した結果、以下の結果が得られます。

{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ [ 2, 3 ], [ 2, 3 ], [ 2, 3 ] ] }

私が欲しいのは次のようなものです:

{ "_id" : ObjectId("502b0e807809d79e84403606"), "name" : "fluffy", "values" : [ 2, 3 ,2 ,3, 2, 3] }

私が気づいたもう 1 つのことは、配列 (値) の型が Number として指定されていることです。次に、'strict' オプションは Number 以外が挿入されないようにしますか? この場合、別の配列の挿入が許可されています。

4

4 に答える 4

40

非推奨$push $each を使用した以下の他のソリューションを参照してください

あなたの例は近いですが、$pushではなく$pushAllに各値を個別に追加する必要があります(別の配列を配列にプッシュするのではなく):values

var Kitten = db.model('Kitten', kittySchema);
Kitten.update({name: 'fluffy'},{$pushAll: {values:[2,3]}},{upsert:true},function(err){
        if(err){
                console.log(err);
        }else{
                console.log("Successfully added");
        }
});
于 2012-08-15T03:37:56.987 に答える