首页 > 解决方案 > 如何找到包含数组的元素具有字段的对象?在猫鼬

问题描述

有一个家庭作业的模式:

const schema = new Schema({
  dateAssign: { type: Date, default: Date.now, index: true },
  teacher: { type: Schema.ObjectId, ref: 'user', index: true },
  lesson: { type: Schema.ObjectId, ref: 'lesson', index: true },
  exercises: [
    { type: Schema.ObjectId, ref: 'exercise' },
  ],
});
mongoose.model('homework', schema)

练习的架构:

const schema = new Schema({
  block: { type: Schema.ObjectId, ref: 'lessonblock', index: true },
  variant: { type: Schema.ObjectId, ref: 'variant', index: true },
  result: { type: Schema.ObjectId, ref: 'exerciseresult', index: true },
  variables: { type: Schema.Types.Mixed, default: {} },
  start_at: { type: Date },
  lock: { type: Boolean, default: false, index: true },
});
mongoose.model('exercise', schema);

如何找到练习中所有元素都具有字段'lock'= true的所有作业?我试过了,但没有用:

const HWs = await Homework.find({ teacher, 'exercises.lock': true }, null, { sort: { dateAssign: -1 }, limit: 20 })

标签: javascriptmongoose

解决方案


推荐阅读