首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Mongoosepopulate方法实现多表关联查询

MongoDB在3.2以上的版本有类似于 join 的 $lookup 聚合操作符,其实 Mongoose 有一个更强大的替代方法,叫做populate ( ),它允许你在其他集合中引用文档,实现更简洁优雅的查询操作...业务需求如下:查询文章信息,并显示文章的分类以及文章的作者信息,下面用 populate 来实现这个查询需求。 1....执行查询操作 // 注意使用 populate 需要引入用到的 model var ArticleCateModel=require('....(docs); }) // 文章表、分类表、用户表关联 ArticleModel.find({}).populate('cid').populate('author_id').exec(function...(err,docs){ console.log(docs); }) 通过给 populate 中传入所关联的字段与指定的集合进行关联查询,在 exec( ) 的回调方法中获取查询的结果。

3.5K20

Mongoose 实现关联查询和踩坑记录

Virtual 和 populate 实现 Mongoosepopulate 方法默认情况下是指向的要关联的集合的 _id 字段,并且在 populate 方法里无法更改的,但是在 Mongoose...4.5.0 之后增加了虚拟值填充[3],以便实现文档中更复杂的一些关系。...path: 'bookList', select: 'bookId name -_id' }); })(); Mongoose 的虚拟值填充,还可以对匹配的文档数量进行计数,使用如下...另外一种是 Mongoose 提供的 populate 方法,这种方式写起来,代码会更简洁些,这里需要注意如果关联的字段是非 _id 字段,一定要在 Schema 中设置虚拟值填充,否则 populate...: http://www.mongoosejs.net/docs/populate.html#populate-virtuals [4] mongoose-populate: https://github.com

26.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

你真的了解mongoose吗?

,完整的连接选项看这里 bufferCommands:这是 mongoose 中一个特殊的选项(传递给 MongoDB 驱动),它可以禁用 mongoose 的缓冲机制。...看完Models,最后让我们来看下在实战中比较有用的Populate 联表(PopulateMongoosepopulate() 可以连表查询,即在另外的集合中引用其文档。...ref 选项告诉 Mongoose 在使用 populate() 填充的时候使用哪个 Model。...ref 选项告诉 Mongoose填充的时候使用 User model。所有储存在 answerer 中的 _id 都必须是 User model 中 document 的 _id。...返回字段选择 如果只需要填充 document 中一部分字段,可给 populate() 传入第二个参数,参数形式即 返回字段字符串,同 Query.prototype.select()。

41.4K30

patternplot包:用ggplot解决你对线性填充!所有填充的全部幻想。

写在前面 patternplot包,提供了丰度的图形可视化填充选项,但是目前我尽然没忽悠看到一篇推文来介绍和学习这个R包的。...大家都知道,柱状图我们在中文中常见填充的除了颜色,还有形状,用不同的线填充,区分不同分组,因为中文期刊彩色版面费贵一些,所以很多老师都会使用形状填充柱状图来节省经费。这样也显得低调和朴素。...但是你们有没有想过,这些填充不同线条的图形几乎都不是R语言做的。说狭隘一点,R语言并没有成熟的解决方案。...可选参数 主要有三种: label,标签设置 frame边框设置 density 填充密度 ?...使用自定义图形进行填充 只需要将各自的图形赋值给pattern.type。

2.2K20

Koa入门(四)Koa 操作数据库

而非关系型数据库以键值对 (key-value) 存储,它的结构固定,每一条记录可以有不一样的键,每条记录可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。...下载地址 4 Koa + Mongodb 操作 4.1 安装链接 npm i mongoose -Sconst mongoose = require('mongoose') // 默认 27017 端口...= require('mongoose') const { Schema, model } = mongoose // 通过 schema 设计出表结构,简单结构复杂结构都可以,每一条自动创建 _...ctx.status = 204 }使用put方法注册路由router.put('/following/:my_id/:id', follow)使用 postman 请求后拉取列表 如果想获取关注者的详细信息使用 populate...await User.find({ name: new RegExp(q) // 模糊搜索 }).limit(limit).skip(page * limit).select(selectFields).populate

2.9K40
领券