簡體   English   中英

根據數組中單個子文檔的字段值查找文檔

[英]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

是的,實際上exercisedate都在同一級別,因此您可以像這樣修改查詢

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM