欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mongodb實(shí)現(xiàn)的關(guān)聯(lián)表查詢功能【population方法】

 更新時(shí)間:2017年07月20日 11:06:36   作者:IT姑涼  
這篇文章主要介紹了Mongodb實(shí)現(xiàn)的關(guān)聯(lián)表查詢功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了population方法實(shí)現(xiàn)關(guān)聯(lián)表查詢的原理與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Mongodb實(shí)現(xiàn)的關(guān)聯(lián)表查詢功能。分享給大家供大家參考,具體如下:

Population

MongoDB是非關(guān)聯(lián)數(shù)據(jù)庫(kù)。但是有時(shí)候我們還是想引用其它的文檔。這就是population的用武之地。

Population是從其它文檔替換文檔中的特定路徑。我們可以遷移一個(gè)單一的文件,多個(gè)文件,普通對(duì)象,多個(gè)普通的對(duì)象,或從查詢中返回的所有對(duì)象

populate 方法

populate 方法可以用在 document 上、 model 上或者是 query 對(duì)象上,這意味著你幾乎可以在任何地方調(diào)用這個(gè)方法以填充你的引用字段。

當(dāng)然,populate 方法在不同對(duì)象上參數(shù)不大一樣,但是都接收一個(gè)option的參數(shù),你可以用這些參數(shù)指定:

語(yǔ)法:Query.populate(path, [select], [model], [match], [options])

path:以空格分隔的引用字段的名稱 String 或 Object類型,
String 類型的時(shí), 指定要填充的關(guān)聯(lián)字段,要填充多個(gè)關(guān)聯(lián)字段可以以空格分隔。
Object 類型的時(shí),就是把 populate 的參數(shù)封裝到一個(gè)對(duì)象里。當(dāng)然也可以是個(gè)數(shù)組

select: Object 或 String ,可選,指定填充 document 中的哪些字段。
Object 類型的時(shí),格式如: {name: 1, _id: 0} ,為 0 表示不填充,為 1 時(shí)表示填充。
String 類型的時(shí),格式如: "name -_id" ,用空格分隔字段,在字段名前加上 -表示不填充。詳細(xì)語(yǔ)法介紹 query-select

match: 可選,指定附加的查詢條件

model: 可選,指定關(guān)聯(lián)字段的 model,如果沒有指定就會(huì)使用 Schema的 ref

options:  Object 可選,指定附加的其他查詢選項(xiàng),如排序以及條數(shù)限制等等

引用字段的類型

目前,Mongoose 只支持以下幾種引用字段的類型:

ObjectId
Number
String
Buffer

而且自然而然,引用 document 的主鍵類型必須和引用字段類型相對(duì)應(yīng)。在生產(chǎn)環(huán)境中,推薦主鍵類型和引用類型都使用 ObjectId ,一是因?yàn)?ObjectId 不包含業(yè)務(wù)含義,二是 ObjectId 不大可能重復(fù),三是因?yàn)?Mongoose 默認(rèn)生成的主鍵類型就是 ObjectId ,可以減少很多配置的操作。

例子

Scheme先定義好,關(guān)聯(lián)屬性

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,這里對(duì)應(yīng)寫String
     ref:'A'
  }
},{collection: 'b'});
module.exports = mongoose.model('B', CountSchema);

關(guān)聯(lián)查詢

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()

更多相關(guān)內(nèi)容還可參考:http://mongoosejs.com/docs/api.html#model_Model.populate

希望本文所述對(duì)大家MongoDB數(shù)據(jù)庫(kù)程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用命令方式安裝MongoDB指南(Windows、Linux)

    使用命令方式安裝MongoDB指南(Windows、Linux)

    這篇文章主要介紹了使用命令方式安裝MongoDB指南,本文分別介紹Windows、Linux下使用命令的方式安裝mongodb,需要的朋友可以參考下
    2015-04-04
  • mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟

    mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟

    這篇文章主要介紹了mongodb如何對(duì)文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • 關(guān)于mongodb初始化以及配置方式

    關(guān)于mongodb初始化以及配置方式

    這篇文章主要介紹了關(guān)于mongodb初始化以及配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程

    MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程

    MongoDB中的聚合aggregate主要用于處理數(shù)據(jù)計(jì)算,這里我們就來詳細(xì)整理MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程,需要的朋友可以參考下
    2016-07-07
  • 關(guān)于單臺(tái)MongoDB實(shí)例開啟Oplog的過程詳解

    關(guān)于單臺(tái)MongoDB實(shí)例開啟Oplog的過程詳解

    這篇文章主要給大家介紹了關(guān)于單臺(tái)MongoDB實(shí)例開啟Oplog的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • centos7安裝mongo數(shù)據(jù)庫(kù)的方法(mongo4.2.8)

    centos7安裝mongo數(shù)據(jù)庫(kù)的方法(mongo4.2.8)

    這篇文章給大家介紹了centos7安裝mongo4.2.8數(shù)據(jù)庫(kù)的詳細(xì)過程,包括mongo數(shù)據(jù)庫(kù)安裝和啟動(dòng)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-01-01
  • MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫。本文重點(diǎn)給大家介紹MongoDB快速入門筆記(一)之windows下安裝MongoDB方法,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-06-06
  • MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解

    MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解

    這篇文章主要介紹了MongoDB運(yùn)行狀態(tài)監(jiān)控、性能分析工具mongostat詳解,mongostat是mongdb自帶的狀態(tài)檢測(cè)工具,在命令行下使用,它會(huì)間隔固定時(shí)間獲取mongodb的當(dāng)前運(yùn)行狀態(tài),并輸出,本文詳細(xì)講解了它的使用,需要的朋友可以參考下
    2015-07-07
  • MongoDB快速入門筆記(四)之MongoDB查詢文檔操作實(shí)例代碼

    MongoDB快速入門筆記(四)之MongoDB查詢文檔操作實(shí)例代碼

    MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。接下來通過本文給大家介紹MongoDB快速入門筆記(四)之MongoDB查詢文檔操作實(shí)例代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • mongodb中非常好用的Aggregate入門教程

    mongodb中非常好用的Aggregate入門教程

    這篇文章主要給大家介紹了關(guān)于mongodb中非常好用的Aggregate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-12-12

最新評(píng)論