mongodb - Typegoose - ObjectId som refererar till ett subdokument


Jag försöker hämta en ref från ett underdokument. Dokumentet ser ut så här.

Exempel på kategoridokument:

{
  "_id": 12345
  "keyword": "smart phones",
  "subCategories": [
    {
      "_id": 6789,
      "keyword": "apple"
    },
    {
      "_id": 101123,
      "keyword": "samsung"
    }
  ]
}

Exempel på ordboksdokument:

{
  "_id": 12345
  "keyword": "iPhone",
  "category": 12345,
  "subCategory": 6789
}

Här är vad jag har försökt göra på Typegoose-modelldefinitionen:

För Dictionary (lägg märke till subCategory egenskapen, jag är inte säker på om det är rätt sätt att referera till ett subdokument):

export class Dictionary extends Typegoose {
  _id!: Schema.Types.ObjectId;

  @prop({
    default: 1
  })
  type!: IDictionaryInput['type'];

  @prop()
  mainKeyword!: string;

  @arrayProp({ items: Synonym })
  synonyms!: Synonym[];

  @prop({ ref: Category })
  category!: Ref<Category>;

  @prop({ ref: CategoryModel.subCategories })
  subCategory!: Ref<Subcategory>;

  @prop({
    default: true
  })
  status!: IDictionaryInput['status'];
}

För kategorier:

export class Category extends Typegoose {
  _id!: Schema.Types.ObjectId;

  @prop()
  keyword!: ICategoryInput['keyword'];

  @prop({
    default: 1
  })
  type!: ICategoryInput['type'];

  @arrayProp({ items: Subcategory })
  subCategories!: Subcategory[];

  @prop({
    default: true
  })
  status!: ICategoryInput['status'];

  @prop()
  insertTimestamp!: ICategoryInput['insertTimestamp'];
}

Sedan försökte jag att populate referenserna genom att göra:

DictionaryModel.findOne({ _id: id })
    .populate({
      path: 'category',
      model: CategoryModel
    })
    .populate({
      path: 'subCategory',
      model: CategoryModel.subCategories
    });

Jag kan framgångsrikt fylla i ref från category men inte på subCategory.