用猫鼬填充嵌套对象

时间:2020-02-12 16:15:09

标签: mongodb mongoose

尝试填充猫鼬文档的深层嵌套对象时遇到问题。

此问题来自一个自定义应用程序,其中我有一个测验答案,这些答案与一组答案相关联。 我的用户模型如下:

const UserSchema = new mongoose.Schema(
  {
    nickname: {
      type: String,
      required: true,
    },
    chapterAnswers: [
      {
        chapter_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Chapter' },
        answers: [
          {
            question_id: { type: mongoose.Schema.Types.ObjectId },
            set_id: { type: mongoose.Schema.Types.ObjectId },
            answer_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Answer' }
          }
        ]
      }
    ]
  },
  {
    collection: 'users'
  }
);

我的答案模型:

const Answer = new Schema({
  label: {
    type: String,
    default: 'Set...'
  },
  set : [
    {
      label : { type : String }
    }
  ]})

我想用答案模型填充字段set_id,因为我的输入看起来像这样:

对于答案集:

...
_id : 123,
set: [
  {label : "Answer 1", _id : 1234},
  {label : "Answer 1", _id : 1235},
]...

对于用户集合:

chapterAnswers [
  {_id: xxx, question_id: xxx, set_id: 123, answer_id: 12345}
]

这是我到目前为止尝试过的:

UserModel.find({})
.populate("chapterAnswers.answers.set_id", "set._id")

但是这使我在此位置没有输入空字段:

  { _id: 5e42bcb7d49b181358dfd4c3,
    question_id: 5e42b8feb3ab0c106dd9ef6a,
    set_id: null,
    answer_id: 5e42b975b3ab0c106dd9ef72 } 

有什么想法吗?我现在真的很坚持这一点

0 个答案:

没有答案