根据数组中单个子文档的字段值查找文档
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
});
我有一个名为 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
});