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

首頁 > 數據庫 > MongoDB > 正文

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

2020-10-29 18:42:40
字體:
來源:轉載
供稿:網友

前言

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

我們一般用Aggregate做什么

aggregate查詢文檔

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

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

$geoNear 地理位置信息查詢

首先我們的坐標數據在庫里面怎么存, 類型為 Array , 記得加 2d 索引, 當然還有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 這個參數是用于確定你返回的距離是什么單位 6378137 的單位是m //maxDistance 查詢的最大距離 // near 中心點坐標// distanceField 距離放在哪個屬性// key 保存坐標數據的地方// query 你的過濾條件                

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

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

$lookup mongodb中的聯表查詢

$lookup 是在比較新的mongodb版本中才能使用的屬性, 當然這個屬性也是用于 aggregate中的, 它補齊了之前mongodb中無法聯表的遺憾

看代碼

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' 為外鍵對應 user表 foreignField: '_id' _id字段他的額外屬性...

說白了 我的會員表里面只存了用戶的id  現在我想要拿到用戶的 其它信息...

附上鏈接吧 $lookup

寫在最后

當然說他是查詢萬金油他當然支持 定義數據的輸出  limit $sort 等常規操作

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: www.日| 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 一区二区三区在线播放 | 精品国产欧美一区二区三区成人 | 国产精品高潮99久久久久久久 | 天天干天天曰天天操 | 视频一区 中文字幕 | 国产欧美日韩精品一区 | 国内在线一区 | 欧美日韩电影一区二区 | 欧美精品在线观看一区二区 | 美女黄在线观看 | 日韩欧美中文在线 | h视频免费 | 成人av影视在线观看 | 精品国产91亚洲一区二区三区www | 久久色网| 国产一区日韩在线 | 国产一区二区三区色淫影院 | 国产欧美日韩中文字幕 | 国产视频福利在线 | 综合一区二区三区 | 超碰999| 日本a在线| 久久免费精品视频 | 色婷婷av一区二区三区软件 | 欧美日韩一区二区视频在线观看 | 黄色片视频免费 | 99精品久久99久久久久 | 神马久久久久久久久久 | 国产精品人成在线播放 | 一区二区三区的视频 | 久久久成人av | 一区二区三区回区在观看免费视频 | 在线免费av观看 | 99久久综合国产精品二区 | 91精品秘密在线观看 | 免费av在线网站 | √新版天堂资源在线资源 | 国产成人午夜 | 成人免费视频 |