我必须对以下Mongoose模型进行更新。
var room_schema = new Schema({
title: { type: String, required: true },
questions: [{ //array of reflections
q_index: {type: Number},
q_text: { type: String},
responses: [{ //array of
student: { type: Schema.Types.ObjectId, ref: 'User' },
response: { type: String }
}]
}]
});
module.exports = mongoose.model('Room', room_schema);
必需值在对象中
x = {
room: ObjectId("586a0aa0232a3918c8b7f5c9"),
student: ObjectId("5863918c85c9ba0aa0232a7f"),
question: 0,
msg: "Some Message"
}
现在,我想更新房间。我尝试过做这样的事情
Room.update(
{_id:x.room,
'questions.q_index':x.question,
'questions.responses.student':x.student},
{$set:{
'responses.$.student.response' : x.msg
}},function(err, data){
if(err){throw err}
console.log(data);
}
);
返回的消息是{ ok: 0, n: 0, nModified: 0 }
,不用说更新没有发生。
此外,Room
可能没有响应数组。我希望,如果是这种情况,那么应该创建并更新数组。
请给我一些指导。
答案 0 :(得分:1)
Sry,但我不能写评论,因为我没有足够的代表,所以我不得不把我的通知写成答案。
当您通过_id搜索房间时,我会在您的第一个查询中发现某些内容。尝试将_id放在引号中,例如“_id”,因为它应该与此帖子相关