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

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

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

前言

aggregate 翻譯過來是聚合的意思, 但是在實(shí)際的使用的它的體驗(yàn)特別像linux中的管道, 每個(gè)管道處理完之后再把結(jié)果交個(gè)下一個(gè)管道, 你的數(shù)據(jù)就像水流, 最后通過各個(gè)管道你能夠得到你想要的數(shù)據(jù)

我們一般用Aggregate做什么

aggregate查詢文檔

  • 聚合 平均數(shù) 等數(shù)據(jù)處理 group sum
  • 地理位置信息 $geoNear
  • 基本上mongodb的所有查詢操作我們都可以用 aggregate實(shí)現(xiàn), 用好這個(gè)基本上是萬金油了

在這里我主要想記錄一下mongodb在地理位置信息查詢中使用到的技術(shù),不僅可以查詢到 距離 還可以按照距離排序

$geoNear 地理位置信息查詢

首先我們的坐標(biāo)數(shù)據(jù)在庫(kù)里面怎么存, 類型為 Array , 記得加 2d 索引, 當(dāng)然還有3d 索引, 目前還沒有用到

 const storeschema = new mongoose.Schema({
  name: { type: String, required: true },
  point: { type: Array, required: true }, // [lon, lat]
 });
 storeschema.index({ point: '2d' });
 return mongoose.model('store', storechema);

然后按照就是地理查詢代碼了

this.ctx.model.Store.aggregate([{
    $geoNear: {
     spherical: true, // spherical 是否按照球形狀來求距離
     distanceMultiplier: 6378137, 
     maxDistance: 10000,
     near: [ lon1, lat1 ],
     distanceField: 'dist',
     key: 'point',
     query: {
     }
    },
 },
 //distanceMultiplier 這個(gè)參數(shù)是用于確定你返回的距離是什么單位 6378137 的單位是m
 //maxDistance 查詢的最大距離 
// near 中心點(diǎn)坐標(biāo)
// distanceField 距離放在哪個(gè)屬性
// key 保存坐標(biāo)數(shù)據(jù)的地方
// query 你的過濾條件                

有一個(gè)很有意思的地方是 match 所以在這里有一個(gè) query屬性來補(bǔ)齊這種遺憾

但是你可以在   后面 使用$match 對(duì)查到的所有地理位置信息數(shù)據(jù)做再一次的篩選

$lookup mongodb中的聯(lián)表查詢

$lookup 是在比較新的mongodb版本中才能使用的屬性, 當(dāng)然這個(gè)屬性也是用于 aggregate中的, 它補(bǔ)齊了之前mongodb中無法聯(lián)表的遺憾

看代碼

await this.ctx.model.MemberInfo.aggregate([
        {
          $match: { store: new ObjectId(store) }
        },
        {
          $lookup: {
            from: 'users',
            localField: 'user',
            foreignField: '_id',
            as: 'user'
          }
        },
        {
          $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: [ '$user', 0 ] }, '$$ROOT' ] } }
        },
        {
          $match: { 'certification.name': { $regex: search } }
        },
        {
          $project: { _id: 1 }
        }
      ]);

memberinfo 與 user 表在這里我想要獲取 memberinfo  localField: 'user' 為外鍵對(duì)應(yīng) user表 foreignField: '_id' _id字段他的額外屬性...

說白了 我的會(huì)員表里面只存了用戶的id  現(xiàn)在我想要拿到用戶的 其它信息...

附上鏈接吧 $lookup

寫在最后

當(dāng)然說他是查詢?nèi)f金油他當(dāng)然支持 定義數(shù)據(jù)的輸出  limit $sort 等常規(guī)操作

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • MongoDB的啟動(dòng)方法詳細(xì)總結(jié)

    MongoDB的啟動(dòng)方法詳細(xì)總結(jié)

    MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于MongoDB啟動(dòng)方法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決

    Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決

    這篇文章主要給大家介紹了關(guān)于Navicat遠(yuǎn)程連接MongoDB最全實(shí)現(xiàn)方法以及報(bào)錯(cuò)解決的相關(guān)資料,文中通過圖文將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 使用centos系統(tǒng)中的crontab命令對(duì)mongodb定時(shí)備份恢復(fù)

    使用centos系統(tǒng)中的crontab命令對(duì)mongodb定時(shí)備份恢復(fù)

    編寫centos腳本使用crontab命令對(duì)mongodb定時(shí)執(zhí)行備份與恢復(fù)操作,并刪除指定天數(shù)前的備份
    2018-03-03
  • 一次線上mongo慢查詢問題排查處理記錄

    一次線上mongo慢查詢問題排查處理記錄

    這篇文章主要給大家介紹了一次線上mongo慢查詢問題排查處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • MongoDB客戶端工具NoSQL?Manager?for?MongoDB介紹

    MongoDB客戶端工具NoSQL?Manager?for?MongoDB介紹

    這篇文章介紹了MongoDB客戶端工具NoSQL?Manager?for?MongoDB,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 詳解Mongodb?多文檔聚合操作處理方法(Map-reduce?函數(shù))

    詳解Mongodb?多文檔聚合操作處理方法(Map-reduce?函數(shù))

    這篇文章主要介紹了Mongodb多文檔聚合操作處理方法(Map-reduce函數(shù)),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • MongoDB數(shù)據(jù)庫(kù)常用28條查詢語句總結(jié)

    MongoDB數(shù)據(jù)庫(kù)常用28條查詢語句總結(jié)

    我們經(jīng)常使用的MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),隨著時(shí)代的進(jìn)步,互聯(lián)網(wǎng)的發(fā)展關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)不滿足于互聯(lián)網(wǎng)的需求,因此出現(xiàn)了非關(guān)系數(shù)據(jù)庫(kù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB數(shù)據(jù)庫(kù)常用28條查詢語句,需要的朋友可以參考下
    2023-05-05
  • java操作mongoDB查詢的實(shí)例詳解

    java操作mongoDB查詢的實(shí)例詳解

    這篇文章主要介紹了java操作mongo查詢的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 關(guān)于mongodb版本升級(jí)問題

    關(guān)于mongodb版本升級(jí)問題

    這篇文章主要介紹了關(guān)于mongodb版本升級(jí)問題,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Linux下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份詳解

    Linux下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份詳解

    這篇文章主要給大家介紹了在Linux系統(tǒng)下下MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)備份的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06

最新評(píng)論