濮阳杆衣贸易有限公司

主頁 > 知識庫 > Mongodb實現(xiàn)的關聯(lián)表查詢功能【population方法】

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

熱門標簽:云南外呼系統(tǒng) 濟南電銷機器人加盟公司 蘋果汽車租賃店地圖標注 電銷機器人是什么軟件 呼和浩特電銷外呼系統(tǒng)加盟 怎么投訴地圖標注 杭州人工電銷機器人價格 老虎洗衣店地圖標注 廣州長安公司怎樣申請400電話

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

Population

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

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

populate 方法

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

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

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

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

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

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

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

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

引用字段的類型

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

ObjectId
Number
String
Buffer

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

例子

Scheme先定義好,關聯(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,這里對應寫String
     ref:'A'
  }
},{collection: 'b'});
module.exports = mongoose.model('B', CountSchema);

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

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

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

您可能感興趣的文章:
  • MongoDB中多表關聯(lián)查詢($lookup)的深入講解
  • MongoDB各種查詢操作詳解
  • MongoDB查詢操作限制返回字段的方法
  • PHP中MongoDB數(shù)據(jù)庫的連接、添加、修改、查詢、刪除等操作實例
  • MongoDB下根據(jù)數(shù)組大小進行查詢的方法
  • MongoDB導出查詢結果到文件例子
  • MongoDB如何對數(shù)組中的元素進行查詢詳解
  • MongoDB查詢技巧總結
  • MongoDB查詢性能優(yōu)化驗證及驗證
  • mongodb實現(xiàn)同庫聯(lián)表查詢方法示例
  • MongoDB的基礎查詢和索引操作方法總結
  • MongoDB多表關聯(lián)查詢操作實例詳解

標簽:雞西 自貢 廈門 無錫 玉林 遼陽 興安盟 泰安

巨人網(wǎng)絡通訊聲明:本文標題《Mongodb實現(xiàn)的關聯(lián)表查詢功能【population方法】》,本文關鍵詞  Mongodb,實現(xiàn),的,關聯(lián),表,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mongodb實現(xiàn)的關聯(lián)表查詢功能【population方法】》相關的同類信息!
  • 本頁收集關于Mongodb實現(xiàn)的關聯(lián)表查詢功能【population方法】的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    兴义市| 建始县| 江永县| 屯留县| 高碑店市| 巨鹿县| 旅游| 尼玛县| 新密市| 沽源县| 弥渡县| 兖州市| 新绛县| 宜君县| 饶河县| 灵武市| 抚州市| 靖远县| 扶余县| 治县。| 克拉玛依市| 万山特区| 若尔盖县| 康保县| 横峰县| 鲁甸县| 永宁县| 牙克石市| 乌苏市| 海兴县| 志丹县| 广南县| 高要市| 道孚县| 博罗县| 巨鹿县| 黄龙县| 安平县| 紫金县| 毕节市| 和田县|