在mongodb中:当数组被覆盖时,是否会删除subdocs?

时间:2014-06-18 09:05:19

标签: node.js mongodb mongoose subdocument

在下面的代码片段中,我使用的是mongoose和mongo db。 TestSchema的arr属性元素在第二次保存后具有不同的_id。这是否意味着第一次保存后的subdoc在第二次保存后自动删除?或者在进行第二次保存之前是否必须明确删除它?

var SubSchema = new Schema({
    itemId : String, value : String
});

var TestSchema = new Schema({
    arr : [SubSchema],
    prop1 : String
})  ;

var TestModel = mongoose.model("TestModel",TestSchema);

var test1 = new TestModel();
test1.arr = [{itemId :'abcabcabcabc', value : 'value1'}];

 // first save
test1.save(function(err,testObj){
    if(err){
        console.error(err);
        return;
    }else{
        console.log("testObj : " + testObj ); 
        var id1 = testObj.arr[0].id;  // id of zeroth element after first save
        console.log("id1 : " + id1);

        // replace arr with a new array     
        testObj.arr = [{itemId:'1', value : 'val1'}, {itemId:'2', value:'val2'}];

        // second save
        testObj.save(function(err,testObj){
           if(err){
               console.error(err);
               return;
           }else{
               console.log("testObj : " + testObj);   // gives 2 elements in arr with new _id's
               var oldobj = testObj.arr.id(id1);
               console.log("oldobj : " + oldobj);   /// gives null
           }
        });
    }
});

0 个答案:

没有答案