• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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#model_Model.populate

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

    您可能感兴趣的文章:
    • MongoDB中多表关联查询($lookup)的深入讲解
    • MongoDB各种查询操作详解
    • MongoDB查询操作限制返回字段的方法
    • PHP中MongoDB数据库的连接、添加、修改、查询、删除等操作实例
    • MongoDB下根据数组大小进行查询的方法
    • MongoDB导出查询结果到文件例子
    • MongoDB如何对数组中的元素进行查询详解
    • MongoDB查询技巧总结
    • MongoDB查询性能优化验证及验证
    • mongodb实现同库联表查询方法示例
    • MongoDB的基础查询和索引操作方法总结
    • MongoDB多表关联查询操作实例详解
    上一篇:基于MongoDB数据库索引构建情况全面分析
    下一篇:解决MongoDB 排序超过内存限制的问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mongodb实现的关联表查询功能【population方法】 Mongodb,实现,的,关联,表,