最近好忙啊,好久没有来写博客了~
干巴蝶!
还是那句话,写一遍真的比看一遍要好很多!

populate方法提供外键填充的功能。由于Mongoose是极具JavaScript特点的程序库,提供了极其简单和强大的填充功能,因此,populate不止可以填充单个文档,也支持多文档,甚至直接填充对象!

外键引用

在定义Schema字段时,可以添加ref属性来指向另一个Schema。 该ref属性在此后被填充(populate)时将被mongoose读取。
例子:

const DetailSchema = new Schema({userId: {type: ObjectId,required: true,ref: 'user' // 关联}
})

填充外键

Detail.findOne({title: 'yy'}).populate('user').exec(function(err, detail){if(err) throw err;console.log(detail.user.name);});

只填充指定字段

Story.findOne({title: 'xx'}).populate('creator', 'name')  // 只返回Person的name字段.exec(function(err, story){if(err) throw err;console.log(story.creator.name);});

填充多个属性

链式调用即可

Story.find(...).populate('creator fans').exec();
Story.find(...).populate('creator').populate('fans').exec();

填充限制

在执行填充命令的同时,还可以指定过滤器以及限制大小,方法就是将方法的参数换成一个对象:

Story.find(...).populate({path: 'fans',match: { age: { $gte: 21 }},select: 'name',options: { limit: 5 }});.exec();

这段代码的结果只会得到:年龄大于21的对象,并且只返回name字段,最多返回5个。

多级关联填充

填充引用的引用。

var userSchema = new Schema({name: String,friends: [{ type: ObjectId, ref: 'User' }]
});
User.findOne({ name: 'Val' }).populate({path: 'friends',populate: { path: 'friends' }});

Mongoose populate方法相关推荐

  1. 使用Mongoose populate实现多表关联存储与查询,内附完整代码

    文章目录 使用Mongoose populate实现多表关联与查询 一. 数据模型创建 1. 创建一个PersonSchema 2. 创建一个StorySchema 3. 使用Schema创建对应的m ...

  2. mongoose populate 填充

    学习笔记 内容待商榷 欢迎提出宝贵意见 populate方法提供外键填充的功能 1.创建作者集合 const User = new mongoose.model('User', new mongoos ...

  3. 案例:演示使用beantuils的setProperty()、getProperty()和populate()方法访问JavaBean的属性

    一.添加jar包并发布到类路径 二.创建Person类 public class Person {private String name;private int age;public String g ...

  4. 对populate()方法的理解

    在开发地图的应用中,我们很多时候需要在地图上绘制一些文本,图标信息(比如当前位置的图标,比如某个区域内肯德基店的所有兴趣点) 为了能够在地图上绘制我们需要的信息(比如图片),我们需要知道图层的概念.( ...

  5. BeanUtils.populate方法使用

    BeanUtils.populate方法使用 1.在执行BeanUtils.populate之后,会把map封装成User对象.要注意的是,UserBean类中的字段名必须和html中的name属性值 ...

  6. BeanUtils的populate方法之日期处理

    BeanUtils的populate方法之日期处理 BeanUtils.populate(Obj, Map);可以使map转对象,但是如果是Obj有个日期字段而Map中这个字段为空时候就会报错,无法赋 ...

  7. populate方法在哪里?

    编写代码的时候,populate方法报错,说在BeanUtils中没有此方法,我以为是我下载的版本的问题,就下载了四个不同的版本,后来发现与版本没有关系. 翻开源码发现BeanUtils包下没有pop ...

  8. [NodeJS] Mongoose Populate 基本使用

    转载自 https://blog.csdn.net/elliott_yoho/article/details/53537147 在使用 mongoose 时,想通过一个外键与另一张表建立关联时,不知该 ...

  9. mongoose populate 返回 指定 字段

    1.mongoose中一个数据模型Product(商品)关联另外一个数据模型Brand(品牌)需要使用ref,关联查询使用populate Product模型 new mongoose.Schema( ...

最新文章

  1. Linux下shel脚本之批量修改文件扩展名
  2. CTF ---pwndbg 调试常用命令
  3. 删除我的电脑里面软件快捷方式
  4. Android 关闭软键盘
  5. java实现可视化报表_如何在Power BI中记录报表可视化?
  6. Spring Cloud Zuul支持–配置超时
  7. 使用IntelliJ书签
  8. 信息学奥赛一本通(2028:【例4.14】百钱买百鸡)
  9. 《大型网站技术架构》1.大型网站架构演练
  10. Code Forces 448C Painting Fence 贪婪的递归
  11. R载入需要的程辑包:rJava Error
  12. AD 组策略应用与排错(2排错)
  13. Hive、Spark优化案例
  14. 在OBS中解决无法录制chrome的问题
  15. 华硕服务器主板那个系列好,华硕主板型号性价比排行 华硕主板那个性价最好用...
  16. 生产计划排程为什么会这么难?
  17. 盒子模型(标准盒子和怪异盒子)
  18. MongoDB Ubuntu安装 APP 支付宝微信支付
  19. 西门子200SMART(七)交叉引用
  20. 系统时间自动校对 让你准时每一天

热门文章

  1. 【华为OD机试真题 C语言】机器人走迷宫
  2. Quartus-ii的LPT1编程硬件配置问题
  3. STP的端口状态,BPDU,计时器
  4. jquery滚动条滚动事件_滚动条和jQuery –使用航点的事件处理
  5. valgrind和Kcachegrind性能分析工具详解
  6. 第15节 域之集中管理、统一管理
  7. 安全的网络通道——网络准入之三层准入
  8. flask手写汉字识别网站(已开源)
  9. Excel — 动态图表(复选框实现动态图)
  10. 文件锁(二)——文件锁的读锁和写锁