Mongodb实现的关联表查询功能【population方法】
本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下:
Population
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);
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
希望本文所述对大家MongoDB数据库程序设计有所帮助。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Mongodb实现的关联表查询功能【population方法】
相关文章
- 部署MongoDB单机部署:最简易方式(mongodb单机)
- 器MongoDB加入服务器:高效实现业务无缝部署(mongodb加入服务)
- 管理MongoDB角色管理:从入门到精通(mongodb角色)
- MongoDB:实现内存限制的最佳实践(mongodb限制内存)
- MongoDB:轻松实现数据同步(mongodb数据同步)
- MongoDB中按日期查询的基本操作(mongodb按日期查询)
- MongoDB:扩展性更强的数据库解决方案(mongodb插件)
- MongoDB 分片搭建:实现无限可能(mongodb分片搭建)
- 某值MongoDB查询:实现大于某值的查询(mongodb查询大于)
- 深入了解MongoDB 数据库的使用方法(深入学习mongodb)
- MongoDB 模糊匹配技巧解析(mongodb模糊匹配)
- 解决 MongoDB 乱码问题的方法(mongodb乱码)
- MongoDB实现字段复制的简单方法(mongodb复制字段)
- MongoDB 中删除数据表的方法(mongodb删除表)
- MongoDB查询:不等于操作(mongodb查询不等于)
- MongoDB数据库删除操作:轻松清理空间(mongodb删库)
- 查询MongoDB精准转义查询:力求完美结果(mongodb转义)
- MongoDB:优化线程池管理性能(mongodb线程池)
- 利用 MongoDB 快速搭建副本集(mongodb创建副本集)
- Exploring the Diverse Storage Formats of MongoDB for Maximum Efficiency(mongodb存储格式)
- 使用MongoDB轻松导入CSV文件(mongodb导入csv)
- MongoDB文档:下载轻松搞定,开启数据库学习之旅(mongodb的文档下载)
- MongoDB对象:高效管理和组织数据的利器(mongodb对象)