복붙노트

[MONGODB] 어떻게 전화와 몽구스의 배열로 객체의 배열을 밀어?

MONGODB

어떻게 전화와 몽구스의 배열로 객체의 배열을 밀어?

나는 하나의 호출을 사용 몽구스의 배열로 여러 값을 밀어해야합니다. I는 작은 배열을 사용하여 수행하려했지만 어레이는 서브 어레이로 삽입 받고있다.

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");
        }
});

(가) 위의 코드를 세 번 호출의 결과는 결과 아래에 있습니다 :

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

내가 원하는 반면이 같은 것입니다 :

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

내가 눈치 또 한가지 번호, 다음, '엄격한'옵션은 숫자 이외의 그 어떤 삽입되지 않습니다 보장을 wouldnt로 배열 (값)의 유형이 지정된이었다? 이 경우, 다른 배열이 삽입되는 것이 허용되고있다.

해결법

  1. ==============================

    1.(12 월 2014 업데이트) MongoDB2.4 때문에 당신은 사용해야합니다 :

    (12 월 2014 업데이트) MongoDB2.4 때문에 당신은 사용해야합니다 :

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

    2.각 $ $ 푸시를 사용하여 아래에 다른 솔루션을 참조 사용되지 않는

    각 $ $ 푸시를 사용하여 아래에 다른 솔루션을 참조 사용되지 않는

    귀하의 예를 가까이이지만 (오히려 값 배열에 다른 배열을 밀어보다) 별도 추가 된 각각의 값을 가지고 $ 푸시보다는 $ pushAll를 원하는 :

    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");
            }
    });
    
  3. ==============================

    3.또는 $ addToSet와 $ 각 수식을 사용 :

    또는 $ addToSet와 $ 각 수식을 사용 :

    https://docs.mongodb.com/manual/reference/operator/update/addToSet/#each-modifier

  4. from https://stackoverflow.com/questions/11963684/how-to-push-an-array-of-objects-into-an-array-in-mongoose-with-one-call by cc-by-sa and MIT license