麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 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 等常規操作

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级不卡视频 | 热99热 | 久久精品99北条麻妃 | 国产深夜福利视频在线播放 | 国产羞羞视频在线观看免费应用 | 99麻豆久久久国产精品免费 | 免费在线中文字幕 | 美女扒开腿让男生桶爽网站 | 久久国产精品免费视频 | 国产一区在线视频观看 | 成人羞羞在线观看网站 | 一级黄色av电影 | 久草在线新视觉 | 亚州综合一区 | 国产精品久久久久久久久久久久久久久久 | 毛片免费观看日本中文 | 日韩每日更新 | 手机免费看一级片 | 成人男男视频拍拍拍在线观看 | 精品国产91久久久久久浪潮蜜月 | 久久精品视频网站 | 日韩视频在线一区二区三区 | 爽爽视频免费看 | 成人啪啪18免费网站 | 草久影院| 毛片国产 | 日韩中文字幕一区二区三区 | 国产视频第一区 | 黄色影院在线观看视频 | 国产精品一区2区3区 | 国产一级小视频 | 亚州精品国产 | 精品久久久91 | 欧美一级淫片免费播放口 | 二区三区四区视频 | 啪啪毛片| 欧美成人黄色小视频 | 亚洲av一级毛片特黄大片 | 国产女同疯狂激烈互摸 | 久久精品综合视频 | 91精品久久香蕉国产线看观看 |