Mongodb实现的关联表查询功能【人口方法】

  

本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下:

  

  

MongoDB是非关联数据库。但是有时候我们还是想引用其它的文档。这就是人口的用武之地。

  

人口是从其它文档替换文档中的特定路径。我们可以迁移一个单一的文件,多个文件,普通对象,多个普通的对象,或从查询中返回的所有对象

  

  

填充方法可以用在文档上,模型上或者是查询对象上,这意味着你几乎可以在任何地方调用这个方法以填充你的引用字段。

  

当然,填充方法在不同对象上参数不大一样,但是都接收一个选择的参数,你可以用这些参数指定:

  

<>强语法: <代码>查询。填充(路径,(选择)、(模型),(比赛),[选项])

  

:以空格分隔的引用字段的名称字符串或对象类型,
  字符串类型的时,指定要填充的关联字段,要填充多个关联字段可以以空格分隔。
  对象类型的时,就是把填充的参数封装到一个对象里。当然也可以是个数组

  

:对象或字符串,可选,指定填充文档中的哪些字段。
  对象类型的时,格式如:{名称:1、_id: 0},为0表示不填充,为1时表示填充。
  字符串类型的时,格式如:“名字_id”,用空格分隔字段,在字段名前加上——表示不填充。详细语法介绍查询select

  

:可选,指定附加的查询条件

  

:可选,指定关联字段的模型,如果没有指定就会使用模式的ref

  

:,对象可选,指定附加的其他查询选项,如排序以及条数限制等等

  

  

目前,猫鼬只支持以下几种引用字段的类型:

  


  
  
  

  

而且自然而然,引用文档的主键类型必须和引用字段类型相对应。在生产环境中,推荐主键类型和引用类型都使用ObjectId,一是因为ObjectId不包含业务含义,二是ObjectId不大可能重复,三是因为猫鼬默认生成的主键类型就是ObjectId,可以减少很多配置的操作。

  

  

计划先定义好,关联属性

  

AScheme:

        var猫鼬=要求(“猫鼬”);   var模式=mongoose.Schema;   var AScheme=新模式({   名称:{   类型:字符串,   默认值:“   }   },{集合:' a '});   模块。出口=猫鼬。模型(A, CountSchema);      之前      

BScheme:

        var猫鼬=要求(“猫鼬”);   var模式=mongoose.Schema;   var BScheme=新模式({   名称:{   类型:字符串,   默认值:“   },   年龄:{   类型:数字   }   援助:{   类型:mongoose.Schema。ObjectId,//如果AScheme的_id类型为字符串,这里对应写字符串   裁判:“一个”   }   },{集合:" b "});   模块。出口=猫鼬。模型(B, CountSchema);      之前      

关联查询

        AModel.find ()。填充({路径:“援助”,选择:{名称:1、_id: 0}})。exec(函数(呃,a) {   如果(err) res.send(错);   console.log(一个);   });//AModel.find (…)。填充({路径:“援助”,匹配:{年龄:{$ gte: 21}},选择:“_id名称”,选择:{限制:5}}).exec ()      之前      

更多相关内容还可参考:http://mongoosejs.com/docs/api.html model_Model.populate

  

希望本文所述对大家MongoDB数据库程序设计有所帮助。

Mongodb实现的关联表查询功能【人口方法】