更新mongoose中的嵌套字段

更新mongoose中的嵌套字段,mongoose,Mongoose,这是我的模型 ds字段是医生的日期槽字段。在病人之后 预订一个时段,然后查看该特定时段的状态 应将日期设置为false,以便其他患者的记录不会相同 时隙 ds字段是一个包含日期字段和日期字段的对象数组 时隙阵列,其中时隙是可用于 特定的日子 ds:[{day,that days时隙数组}] 回答问题,直接展示mongoose和mongo的解决方案。您可以使用位置运算符($)或使用mongoose和resave itconst doctor=wait doctor.findOneAndUpdate

这是我的模型

ds字段是医生的日期槽字段。在病人之后 预订一个时段,然后查看该特定时段的状态 应将日期设置为false,以便其他患者的记录不会相同 时隙

ds字段是一个包含日期字段和日期字段的对象数组 时隙阵列,其中时隙是可用于 特定的日子

ds:[{day,that days时隙数组}]


回答问题,直接展示mongoose和mongo的解决方案。您可以使用位置运算符($)或使用mongoose和resave itconst doctor=wait doctor.findOneAndUpdate({“\u id”:docId,“ds.timeslot.\u id”:“5f37f980d178d528f822775d”},{$set:{ds.timeslot.$.status”:false})我尝试了此操作,但得到错误MongoError:无法在元素{ds:[{id:ObjectId('5f37f980d178d528f8227750'),日期:“0”,时隙:[{id:ObjectId('5f37f980d178d528f8227751'),时间:“下午4:30”,状态:true},{id:ObjectId('5f37f980d178d528f8227752'),时间:“下午5:45”,状态:false}只是官方文件“嵌套数组位置$运算符不能用于遍历多个数组的查询,例如遍历嵌套在其他数组中的数组的查询,因为$占位符的替换为单个值”回答了问题,直接显示了mongoose和mongo的解决方案。您可以使用位置运算符($)或者使用mongoose和resave itconst doctor=wait doctor.findOneAndUpdate({“\u id”:docId,“ds.timeSlots.\u id”:“5f37f980d178d528f822775d”},{$set:{ds.timeSlots.$.status:{false}})修改文档,我尝试了这个方法,但发现错误:无法在元素{ds:[{{id:ObjectId:ObjectId('5f37f980d178d528f8227750'),日期:“0”,时隙:[{id:ObjectId('5f37f980d178d528f8227751'),时间:“下午4:30”,状态:true},{id:ObjectId('5f37f980d178d528f8227752'),时间:“下午5:45”,状态:false}只是官方文件“嵌套数组位置$operator不能用于遍历多个数组的查询,例如遍历嵌套在其他数组中的数组的查询,因为$placeholder的替换项是单个值“
const DoctorSchema=mongoose.Schema({
    ds:[{day:String,timeSlots:[{time:String,status:Boolean}]}],
    hospital:{type:mongoose.Schema.ObjectId,ref:'Hospital',required:true},
    city:{type:[String],index:true},
    addedAt:{type:Date,default:Date.now}
})