我有一个在 mongoose 中实现的 mongodb 测试模式。
var TestSchema = new mongoose.Schema({ exam:[ Exam ] });
var ExamSchema = mongoose.Schema({type:String, questions: [ { question:{ type: ObjectId, ref: 'Question' }, answer:String } ] });
var QuestionSchema = mongoose.Schema({ desciption:String, solution:String });
测试的想法是,一个学生可能参加几门考试的考试,每门考试都有一个类型名称(可以是 Math 或 Physics )和一个问题列表 ObjectID 以及学生填写的相应答案。
此代码可以帮助在测试 TestModel.update({'_id':pid,'exam.type':type},{'$push':{'exam.$.questions' :{'question':questionsId,'answer':answer}}},options,function(err,ref){ if(err) { console.log('add question to Exam'.red,err); callback(err , null); }else{ console.log('add question to Exam'.green+ref);
callback(null,ref); } }) 添加效果很好,但要删除问题和答案,更新不起作用。
Model.update({'_id':pid,'exam.type':type},{'$pull':{'exam.$.questions':questionId}},options,function(err,ref)
Model.update({'_id':pid,'exam.type':type},{'$pull':{'exam.$.questions.question':questionId}},options,function(err,ref)
Model.update({'_id':pid,'exam.type':type,'exam.questions.question':questionId},{'$pull':{'exam.$.questions.$.question':questionId}},options,function(err,ref)
Model.update({'_id':pid,'exam.type':type,'exam.questions.question':questionId},{'$pull':{'exam.questions.$.question':questionId}},options,function(err,ref)
我尝试了这些方法,但这些方法都不起作用