国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - MongoDB - MongoDB多表關(guān)聯(lián)查詢操作實(shí)例詳解

MongoDB多表關(guān)聯(lián)查詢操作實(shí)例詳解

2020-05-23 19:34sintina MongoDB

這篇文章主要介紹了MongoDB多表關(guān)聯(lián)查詢操作,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫實(shí)現(xiàn)多表關(guān)聯(lián)查詢的相關(guān)原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了MongoDB多表關(guān)聯(lián)查詢操作。分享給大家供大家參考,具體如下:

Mongoose的多表關(guān)聯(lián)查詢

首先,我們回憶一下,MySQL多表關(guān)聯(lián)查詢的語句:

student表:

MongoDB多表關(guān)聯(lián)查詢操作實(shí)例詳解

calss表:

MongoDB多表關(guān)聯(lián)查詢操作實(shí)例詳解

通過student的classId關(guān)聯(lián)進(jìn)行查詢學(xué)生名稱,班級(jí)的數(shù)據(jù):

SELECT student.name,student.age,class.name FROM student,class WHERE student.classId = class.id

Mongoose多表聯(lián)合查詢(還是以眾所周知的學(xué)生、班級(jí)作為實(shí)例)

· 表結(jié)構(gòu)的定義(schemas目錄下)

1. student表(student.js)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
/*定義數(shù)據(jù)模式*/
var StudentSchema = new mongoose.Schema({
  name: String,
  calssId: {
    type: Schema.Types.objectId,
    ref: 'class'
  },
  age: Number,
  number: Number,
  meta: {
    createAt: {
      type: Date,
      default: Date.now()
    },
    updateAt: {
      type: Date,
      default: Date.now()
    }
  }
  /*更新時(shí)間的*/
});
module.exports = StudentSchema;

2. class表(class.js)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
/*定義數(shù)據(jù)模式*/
var ClassSchema = new mongoose.Schema({
  name: String,
  meta: {
    createAt: {
      type: Date,
      default: Date.now()
    },
    updateAt: {
      type: Date,
      default: Date.now()
    }
  }
  /*更新時(shí)間的*/
});
module.exports = ClassSchema;

· 生成Model(model目錄下)

1. student Model(student.js)

?
1
2
3
4
5
6
var mongoose = require('mongoose');
var StudentSchema = require('../schemas/student');
/*通過model編譯模式為模型*/
var Student = mongoose.model('student', StudentSchema);
/*導(dǎo)出Student模型 模塊*/
module.exports = Student;

2. class Model(class.js)

?
1
2
3
4
5
6
var mongoose = require('mongoose');
var ClassSchema = require('../schemas/class');
/*通過model編譯模式為模型*/
var Class = mongoose.model('class', ClassSchema);
/*導(dǎo)出Class模型 模塊*/
module.exports = Class;

· Model進(jìn)行數(shù)據(jù)的查詢操作

1. 將靜態(tài)類的方法加到Model的編譯中

?
1
2
3
4
5
6
7
StudentSchema.static = {
  fetch: function(cb){
 return this
   .find({})
   .sort('meta.updateAt') //按更新的時(shí)間排序
  }
}

2. 將靜態(tài)類方法加到Model中

?
1
2
3
4
5
StudentSchema.static('fetch', function(cb){
   return this
     .find({}, cb)
  .sort('meta.updateAt')
})

3. 直接調(diào)用model的find()方法

查詢的結(jié)果均為:

[
    {
        _id: '5a05222f583e5720b8660191',
        name: '張三',
        age: 18,
        number: 11,
        classId: '5a0036512b740f32e4371e66'
    },
    {
        _id: '5a05222f583e5720b8660091',
        name: '李四',
        age: 19,
        number: 11,
        classId: '5a0036512b740f32e1371e66'
    },
    {
        _id: '5a05222f583e5720b18660191',
        name: '趙五',
        age: 17,
        number: 11,
        classId: '5a0036512b7420f32e4371e66'
    }
]

· 多表聯(lián)合查詢(學(xué)生對(duì)應(yīng)班級(jí))

?
1
2
3
4
5
6
7
8
9
StudentSchema.static = {
  findStudentWithClass: function (cb) {
    return this
      .find({})
      .populate('classId')//注意這是聯(lián)合查詢的關(guān)鍵
      .sort('meta.updateAt')
      .exec(cb)
  }
}

查詢結(jié)果:

[
    {
        _id: '5a05222f583e5720b8660191',
        name: '張三',
        age: 18,
        number: 11,
        classId: {
            _id: '5a0036512b740f32e4371e66',
            name: '一年1班'
        }
    },
    {
        _id: '5a05222f583e5720b8660091',
        name: '李四',
        age: 18,
        number: 11,
        classId: {
            _id: '5a0036512b740f32e1371e66',
            name: '二年2班'
        }
    },
    {
        _id: '5a05222f583e5720b18660191',
        name: '趙五',
        age: 18,
        number: 11,
        classId: {
            _id: '5a0036512b7420f32e4371e66',
            name: '一年2班'
        }
    }
]

· 由上面的實(shí)例可知,mongoose的多表聯(lián)合查詢的關(guān)鍵:

1. 數(shù)據(jù)模式結(jié)構(gòu)定義需要利用關(guān)鍵字ref定義關(guān)聯(lián)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var Schema = new mongoose.Schema({
  field: {
 type: mongoose.Schema.Type.ObjectId,
 ref: 'model'
  }
});
Schema.static = {
  fetch: function(cb){
 return this
    .find({})
    .populate('field')
    .exec(cb)
 }
 }
var Model = mongoose.Model('model',Schema );

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

原文鏈接:https://blog.csdn.net/WaterSprite_ct/article/details/78500997

延伸 · 閱讀

精彩推薦
  • MongoDBmongodb基本命令實(shí)例小結(jié)

    mongodb基本命令實(shí)例小結(jié)

    這篇文章主要介紹了mongodb基本命令,結(jié)合實(shí)例形式總結(jié)分析了MongoDB數(shù)據(jù)庫切換、查看、刪除、查詢等基本命令用法與操作注意事項(xiàng),需要的朋友可以參考下...

    dawn-liu3652020-05-26
  • MongoDBMongoDB中javascript腳本編程簡介和入門實(shí)例

    MongoDB中javascript腳本編程簡介和入門實(shí)例

    作為一個(gè)數(shù)據(jù)庫,MongoDB有一個(gè)很大的優(yōu)勢——它使用js管理數(shù)據(jù)庫,所以也能夠使用js腳本進(jìn)行復(fù)雜的管理——這種方法非常靈活 ...

    MongoDB教程網(wǎng)6982020-04-24
  • MongoDBMongodb實(shí)現(xiàn)定時(shí)備份與恢復(fù)的方法教程

    Mongodb實(shí)現(xiàn)定時(shí)備份與恢復(fù)的方法教程

    這篇文章主要給大家介紹了Mongodb實(shí)現(xiàn)定時(shí)備份與恢復(fù)的方法教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB憑什么躋身數(shù)據(jù)庫排行前五

    MongoDB憑什么躋身數(shù)據(jù)庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續(xù)雄踞榜單前五,這個(gè)增幅在全榜僅次于PostgreSQL的77.99,而其相對(duì)于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDBMongoDB 內(nèi)存使用情況分析

    MongoDB 內(nèi)存使用情況分析

    都說 MongoDB 是個(gè)內(nèi)存大戶,但是怎么知道它到底用了多少內(nèi)存呢...

    MongoDB教程網(wǎng)10002020-09-29
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
  • MongoDB遷移sqlserver數(shù)據(jù)到MongoDb的方法

    遷移sqlserver數(shù)據(jù)到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數(shù)據(jù)到MongoDb的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDB分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB分片集群的問題

    分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲(chǔ)數(shù)據(jù)庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋...

    Linux-18743072020-12-20
主站蜘蛛池模板: 免费a级毛片大学生免费观看 | 久久久国际精品 | 欧美怡红院视频一区二区三区 | 精品久久久久久久久久 | 色综合天天天天做夜夜夜夜做 | 国产av毛片 | 色天天综合| 国产一级黄色 | 自拍视频网 | 午夜精品久久久久久久久久久久 | 久久最新 | 91久久精品国产 | 亚洲精品一区二区三区樱花 | 国产精品自产拍在线观看 | 欧美日韩在线电影 | 激情综合国产 | 在线中文字幕视频 | 国产精品密在线观看 | 成人av入口 | 日韩色网| 91精品一区二区三区久久久久久 | 欧美三区 | 日本中文字幕一区 | 欧美区国产区 | 伊人激情| 欧美日韩高清 | 人人插人人 | 亚洲激情一区二区 | 2022天天操 | 国产一区久久 | 欧美国产综合 | 91视频网页版 | 免费一级特黄做受大片 | 国产xnxx| 国产精品美女久久久久久久久久久 | 欧美黄色网页 | 精品天堂 | √天堂8在线网 | 全部免费毛片在线播放 | 亚洲视频在线观看 | 国产亚洲一区二区三区 |