alexbuki
@alexbuki
программист js

Как выполнить поиск, где элементы вложенного массива должны иметь поле?

Есть схема домашнего задания:
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)

Схема exercise:
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);

Нужно найти все объекты схемы c homeworks такие, у которых во вложенном массиве exercises все элементы массива имели поле lock = true;

Пробовал так, не получается:
const HWs = await Homework.find({ teacher, 'exercises.lock': true }, null, { sort: { dateAssign: -1 }, limit: 20 })
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы