重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下:
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站建设、通榆网络推广、微信平台小程序开发、通榆网络营销、通榆企业策划、通榆品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联为所有大学生创业者提供通榆建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.comPopulation
MongoDB是非关联数据库。但是有时候我们还是想引用其它的文档。这就是population的用武之地。
Population是从其它文档替换文档中的特定路径。我们可以迁移一个单一的文件,多个文件,普通对象,多个普通的对象,或从查询中返回的所有对象
populate 方法
populate 方法可以用在 document 上、 model 上或者是 query 对象上,这意味着你几乎可以在任何地方调用这个方法以填充你的引用字段。
当然,populate 方法在不同对象上参数不大一样,但是都接收一个option的参数,你可以用这些参数指定:
语法:Query.populate(path, [select], [model], [match], [options])
path:以空格分隔的引用字段的名称 String 或 Object类型,
String 类型的时, 指定要填充的关联字段,要填充多个关联字段可以以空格分隔。
Object 类型的时,就是把 populate 的参数封装到一个对象里。当然也可以是个数组
select: Object 或 String ,可选,指定填充 document 中的哪些字段。
Object 类型的时,格式如: {name: 1, _id: 0} ,为 0 表示不填充,为 1 时表示填充。
String 类型的时,格式如: "name -_id" ,用空格分隔字段,在字段名前加上 -表示不填充。详细语法介绍 query-select
match: 可选,指定附加的查询条件
model: 可选,指定关联字段的 model,如果没有指定就会使用 Schema的 ref
options: Object 可选,指定附加的其他查询选项,如排序以及条数限制等等
引用字段的类型
目前,Mongoose 只支持以下几种引用字段的类型:
ObjectId
Number
String
Buffer
而且自然而然,引用 document 的主键类型必须和引用字段类型相对应。在生产环境中,推荐主键类型和引用类型都使用 ObjectId ,一是因为 ObjectId 不包含业务含义,二是 ObjectId 不大可能重复,三是因为 Mongoose 默认生成的主键类型就是 ObjectId ,可以减少很多配置的操作。
例子
Scheme先定义好,关联属性
AScheme:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var AScheme= new Schema({ name: { type: String, default: '' } },{collection: 'a'}); module.exports = mongoose.model('A', CountSchema);
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。