首页 > 解决方案 > 由子文档 ID 填充的猫鼬

问题描述

假设以下架构:

阿舍马

  ASchema = {
    type: { type: ObjectId, ref: BModel }
  }

  /**
   * ADoc = { 
   *    _id: 00a1, 
   *    type: 00b1001 
   * },
   * 
   */ 

架构

  BSchema = {
    children: [{ 
      name: String, 
    }]
  }

  /**
   * BDoc = { 
   *    _id: 00b1,
   *    children: [{ 
   *      _id: 00b1001,
   *      name: 'b1'
   *    }, {
   *      _id: 00b1002,
   *      name: 'b2'
   *    }]
   * }
   * 
   */

当我通过_id:“00a1”找到时,我会得到以下结果

  AModel.find({_id: '00a1'}).lean();
  /**
   * {
   *    _id: 00a1,
   *    type: 00b1001
   * }
   */

如您所见,我的 ASchema 类型引用了 B 文档中子文档的 ObjectId

我想得到这个结果

  /**
   * {
   *    _id: 00a1,
   *    type: {
   *      _id: 00b1001,
   *      name: 'b1'
   *    }
   * }
   */

我知道有populate,但是我得到null,希望得到大家的帮助,谢谢!

我发布了同样的问题,但描述不够清楚。 如何使用子文档 ObjectId 填充

标签: mongodbmongoose

解决方案


推荐阅读