一,引入

当想要把文章的作者和用户中的人连接起来时,只要把用户的id给文章的author即可,但是还读取不到其他的用户信息,比如年龄和爱好等。
这时候就需要使用populate方法了:

二,实际例子:

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true}).then(() => console.log('数据库连接成功')).catch(err => console.log(err, '数据库连接失败'));
// 用户集合规则
const userSchema = new mongoose.Schema({name: {type: String,required: true}
});
// 文章集合规则
const postSchema = new mongoose.Schema({title: {type: String},author: {type: mongoose.Schema.Types.ObjectId,  //id的类型是这个ref: 'User'    //利用ref关联User}
});
// 用户集合
const User = mongoose.model('User', userSchema);
// 文章集合
const Post = mongoose.model('Post', postSchema);
// 创建用户
User.create({name: 'itheima'}).then(result => console.log(result));
// 创建文章
Post.create({titile: '123', author: '5f3beb4e20dd974774bc3b7c'}).then(result => console.log(result));
Post.find().populate('author').then(result => console.log(result))

第一步:在文章下使用author属性,里面设置属性:

author: {type: mongoose.Schema.Types.ObjectId,  //id的类型是这个ref: 'User'    //利用ref关联User}

第二步,创建文章时,author需要引入对应 用户的id值

Post.create({titile: '123', author: '5f3beb4e20dd974774bc3b7c'}).then(result => console.log(result));

第三步,查询:利用populate方法,搞出对应的作者相关的信息。

Post.find().populate('author').then(result => console.log(result))

MongoDB学习(黑马教程)-7-数据库MongoDB的集合关联相关推荐

  1. 【MySQL】黑马教程MySQL数据库 MySQL基础(一)

    文章目录 [MySQL]黑马教程MySQL数据库 | MySQL基础(一) MySQL启动 MySQL客户端连接 MySQL数据模型 SQL SQL分类 DDL 表操作-查询 表操作-创建 表操作-数 ...

  2. Mongodb学习总结(2)——MongoDB与MySQL区别及其使用场景对比

    对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数 ...

  3. MongoDB 学习笔记四 C#调用MongoDB

    网址:http://blog.csdn.net/xundh/article/details/49449467 驱动 下载  https://github.com/mongodb/mongo-cshar ...

  4. [linux][MongoDB] mongodb学习(一):MongoDB安装、管理工具、

    参考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安装完美实现! 1. mongoDB安装.启动.关闭 1.1 下载安装包 ...

  5. 【MySQL】黑马教程MySQL数据库 | 学习记录笔记

    MySQL概述 MySQL介绍 MySQL是一种关系型数据库(RDBMS),就是建立在关系模型基础上,由多张相互连接的二维表组成的数据库.像Excel表.特点:使用表存储数据,格式统一,便于维护:使用 ...

  6. MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  7. mongodb3.2 java,MongoDB学习笔记:(3)、mongodb 3.2在java环境中的简单CRUD

    首先新建一个java project项目,去下载mongo-java-driver-3.2.2.jar包.build path导入junit需要的jar包.另外运行代码前先要启动mongod 服务.下 ...

  8. 【MongoDB学习笔记7】深入MongoDB的删除(remove/drop)操作

    先看集合post中文档信息: > db.post.find(); { "_id" : ObjectId("54a51cfd7f46906f81b7adcd" ...

  9. 非关系型数据库MongoDB学习笔记

    MongoDB学习笔记   --周灿 创建数据库 use "databasename" 查看数据库 show dbs 给指定数据库添加集合和插入记录 db.集合名.insert({ ...

  10. MongoDB学习系列 -- 数据库、集合、文档的CURD

    前面一篇章节我们已经对MongoDB的基本概念有了一个大概的了解,从今天开始,我们将进行更细粒度的学习,首先就是数据库.集合.文档的CURD操作. 为了便于操作,减少学习难度,我们这里使用javasc ...

最新文章

  1. QIIME 2教程. 16纵向和成对样本比较q2-longitudinal(2020.11)
  2. 利用solr6.5,tomcat9.0和centos7.0的搭建
  3. qt当前工程相对路径_QT编程:(6)相对路径问题
  4. Hadoop的HA机制
  5. IOS笔记CALayer的position和anchorPoint
  6. 在没有适当上下文的情况下引发异常是一种不良习惯
  7. 我们可以用SharePoint做什么
  8. Excel 如何使多组数据的饼状图大小一致
  9. 什么是消息队列(Message queue)
  10. matlab的卡方临界值,Excel计算卡方分布,F分布
  11. 大数据-浅谈hive优化
  12. 如何在亿级数据中判断一个元素是否存在?
  13. python 二项分布
  14. JVM垃圾回收器-CMS并发标记清除
  15. 云原生个人线路 Docker容器化
  16. 阿里云模板建站好处(模板建站+定制建站)优惠购买指导
  17. 《实时控制软件设计》第一次阅读笔记
  18. xilinx fpga SEM
  19. python线程间通信方法之Event
  20. java 郑莉 视频_[Java基础] 清华大学java语言教学视频 共49讲 郑莉主讲

热门文章

  1. 667.优美的数列II(力扣leetcode) 博主可答疑该问题
  2. oracle dba_tables degree default,oracle中如何将表的并行度设定为DEFAULT?如下:
  3. php7+结合比较运算符,php7运算符
  4. python小测验答案_2020中国大学《计算机应用基础(Python)》结课测验答案高校邦《教你动手做H5小游戏》章测试答案...
  5. django使用ajax传输数据
  6. cxgrid的FINDPANEL编程
  7. 月日加四位尾数编号生成 VB方式
  8. 移动端设计尺寸基础知识
  9. 【树】Unique Binary Search Trees II
  10. 虚拟化应用(三)Hyper-V 2.0 初探