更新Mongoose模型中的数组

时间:2017-01-09 09:10:06

标签: javascript node.js mongodb mongoose

我必须对以下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可能没有响应数组。我希望,如果是这种情况,那么应该创建并更新数组。 请给我一些指导。

1 个答案:

答案 0 :(得分:1)

Sry,但我不能写评论,因为我没有足够的代表,所以我不得不把我的通知写成答案。

当您通过_id搜索房间时,我会在您的第一个查询中发现某些内容。尝试将_id放在引号中,例如“_id”,因为它应该与此帖子相关

stackoverflow: updating-an-array-inside-a-mongoose-model