在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下: Population MongoDB是非关联数据库。但是有时候我们还是想引用其它的文档。这就是population的用武之地。 Population是从其它文档替换文档中的特定路径。我们可以迁移一个单一的文件,多个文件,普通对象,多个普通的对象,或从查询中返回的所有对象 populate 方法 populate 方法可以用在 document 上、 model 上或者是 query 对象上,这意味着你几乎可以在任何地方调用这个方法以填充你的引用字段。 当然,populate 方法在不同对象上参数不大一样,但是都接收一个option的参数,你可以用这些参数指定: 语法: path:以空格分隔的引用字段的名称 String 或 Object类型, select: Object 或 String ,可选,指定填充 document 中的哪些字段。 match: 可选,指定附加的查询条件 model: 可选,指定关联字段的 model,如果没有指定就会使用 Schema的 ref options: Object 可选,指定附加的其他查询选项,如排序以及条数限制等等 引用字段的类型 目前,Mongoose 只支持以下几种引用字段的类型: ObjectId 而且自然而然,引用 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); BScheme: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BScheme= new Schema({ name: { type: String, default: '' }, age:{ type:Number } aid: { type: mongoose.Schema.ObjectId,//如果AScheme的_id type为String,这里对应写String ref:'A' } },{collection: 'b'}); module.exports = mongoose.model('B', CountSchema); 关联查询 AModel.find().populate({path: 'aid', select: {name: 1,_id:0}}).exec(function(err, a) { if (err) res.send(err); console.log(a); }); // AModel.find(...).populate({ path: 'aid', match: { age: { $gte: 21 }}, select: 'name -_id', options: { limit: 5 } }) .exec() 更多相关内容还可参考:http://mongoosejs.com/docs/api.html#model_Model.populate 希望本文所述对大家MongoDB数据库程序设计有所帮助。 |
请发表评论