2015-11-20 90 views
0

問題是我無法使用下一個模式從貓鼬中的對象中刪除附件。從另一個數組中的數組中移除元素,使用貓鼬

var question=mongoose.Schema({ 
 
    _id:mongoose.Schema.Types.ObjectId 
 
    answers:[{ 
 
    _id:mongoose.Schema.Types.ObjectId 
 
    attachments:[ 
 
     _id:mongoose.Schema.Types.ObjectId 
 
    ] 
 
    }] 
 
});

我嘗試從與下一個代碼文檔中刪除的附件。

Question.update({ 
 
    _id: req.params.idQuestion, 
 
    'answers._id': req.params.idAnswer 
 
}, { 
 
    $pull: { 
 
    'answers.$.attachments':{_id:req.params.idAttachment} 
 
    } 
 
}, function (err, updated) { 
 
    if(err){ 
 
    return res.status(400).send(err); 
 
    } 
 
    else if(!updated.nModified){ 
 
    return res.status(400).send('Question hasn\t been updated.'); 
 
    } 
 
    
 
    res.send(200); 
 
    
 
});

我以爲我的查​​詢是不正確的,並試圖這樣做,在蒙戈外殼。它工作完美。

db.questions.update({ 
 
    _id:ObjectId('xx'), 
 
    'answers._id':ObjectId('yy') 
 
},{ 
 
    $pull:{ 
 
    'answers.$.attachments':{_id:ObjectId('zz')} 
 
    } 
 
})

有人可以幫我解決這個問題?

回答

0

試試這個:

var qid=req.params.idQuestion, 
    aid=req.params.idAnswer; 
//find 
Question.find({ 
    _id: qid, 
    'answers._id': aid 
},{ 
    answers:1 
},function(err,question){ 
    //change 
    var answers=question.answers.function(el){ 
      return el._id!=aid; 
     }); 
    //update 
    Question.update({ 
     _id: qid, 
    },{$set:{ 
     answers:answers 
    }},function(err,updated){ 
     ...//your callback here 
    }); 
}); 
+0

你是在暗示去除附着在不使用貓鼬對象? – user2542231

+0

是的。查找字段,修改字段,將字段寫入數據庫。數組,字符串或日期...不管 –

相關問題