a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

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

2020-10-29 18:46:00
字體:
供稿:網(wǎng)友

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

Population

MongoDB是非關(guān)聯(lián)數(shù)據(jù)庫。但是有時(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ù)指定:

語法: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ì)語法介紹 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ù)庫程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久天堂| 超碰av在线 | 国产精品色综合 | 成人欧美一区二区三区在线播放 | 国产伦理精品一区二区三区观看体验 | 可以看黄的视频 | 男女做网站 | 日日草夜夜草 | 免费在线成人av | 一区久久 | 国产视频网 | 激情开心站 | 久草在线| 久久久国产精品一区 | 色橹橹欧美在线观看视频高清 | 日日夜夜精品免费视频 | 色网址在线 | 男人日女人网站 | 国产中文一区二区三区 | 日本在线观看网站 | 国产午夜精品一区二区三区四区 | 日韩二区精品 | 欧美视频免费看 | 在线观看免费av电影 | 视频久久精品 | 九九资源站 | 蜜桃av在线播放 | 91色视频在线观看 | 国产视频h | 欧美成人一区二免费视频软件 | 国产视频久久久 | 四虎永久地址 | 黑人巨大精品欧美一区二区三区 | 国产精品久久久久久久久久东京 | 91在线精品秘密一区二区 | 香蕉久久久 | 成人在线看片网站 | 久久精品视 | 国产91在线播放精品91 | av看片网 | 久久九九99 |