[英]Find document based on field value on single subdocument in array
我有一個名為 WorkoutUser 的 Mongoose 集合,具有以下簡化架構:
const WorkoutUserSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true,
},
exercises: [{
exercise: {
type: Schema.Types.ObjectId,
ref: 'Exercise',
},
sets: [// not important],
date: Date, // <- important
}],
});
由於我不會在這里討論的原因,我想查詢 WorkoutUser 集合以查找當前鍛煉之前與當前用戶相關聯的所有鍛煉實例。 由於此處不相關的其他原因,未在 WorkoutUser 上定義日期,但每次鍛煉的日期將相同。
我想做如下事情:
const workouts = await db.WorkoutUser
.find({
_id: { $ne: workout._id },
user: workout.user,
'exercises.exercise': exercise.exercise,
'exercises.exercise.date': { $lt: userWorkout.date }, // <- relevant line
});
這目前不起作用。 有沒有一種方法可以在日期上搜索exercises.exercise[0].date
?
是的,實際上exercise
和date
都在同一級別,因此您可以像這樣修改查詢
const workouts = await db.WorkoutUser
.find({
_id: { $ne: workout._id },
user: workout.user,
'exercises.exercise': exercise.exercise,
'exercises.date': { $lt: userWorkout.date }, // <- relevant line
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.