我有用于更新文档的mongoose查询,我要检查文档_id和对象数组中的另一个id。我的疑问是:
Survey.findOneAndUpdate({"_id":req.params.id,"inv_users.cmp_user_id":cmp_user_id},
{
$set:{ "inv_users.$.survey_completed":true}
}
我需要查找包含_id
的文档,并在survey_completed
内仅更新inv_users
const SurveySchema = mongoose.Schema({
name : {
type : String,
require : true,
},
company_id: {
type : Schema.ObjectId,
require:true
},
category : {
id : Schema.ObjectId,
name : {
type : String,
require : true,
}
},
theme : {
type : Schema.ObjectId,
},
display_type : {
ui : {
type : String
},
randomization : {
type : Boolean,
default : false,
},
skip : {
type : Boolean,
default : false,
},
pageno : {
type : Boolean,
default : false,
}
},
start_datetime : {
type: Date,
},
end_datetime : {
type: Date,
},
logo : {
type : String,
},
is_header : {
type : Boolean,
default : false,
},
is_footer : {
type : Boolean,
default : false,
},
header_title : {
type: String,
},
footer_title : {
type: String,
},
questions : [{
question : {
type : String,
},
ans_type : {
type : String,
},
options : [{
type : String,
}],
answers : [{
answer : {
type : String,
},
cmp_user_id : {
type : Schema.ObjectId,
},
global_user_id : {
type : Schema.ObjectId,
},
date_time : {
type : Date,
default:Date.now()
},
ip : {
type : String,
},
latitude : {
type : Number,
},
longitude : {
type : Number,
}
}]
}],
inv_users : [{
cmp_user_id : {
type : Schema.ObjectId,
},
email : {
type : String,
},
mail_viewed : {
type : Boolean,
default : false,
},
ip : {
type : String,
},
latitude : {
type : Number,
},
longitude : {
type : Number,
},
img_read_code : {
type : String,
},
mail_responsed : {
type : Boolean,
default : false,
},
survey_completed : {
type : Boolean,
default : false,
},
}]
});
答案 0 :(得分:0)
同一问题刚刚将$ set全部取出来并且有效吗
Survey.findOneAndUpdate({"_id":req.params.id,"inv_users.cmp_user_id":cmp_user_id},
{
"inv_users.$.survey_completed":true
})