摘要:實現附近的人最近騰訊把漂流瓶這個張小龍引以為傲的產品下架,正所謂匹夫無罪懷璧其罪,漂流瓶本無罪,但是被一些人利用傳播色情內容或廣告,因此在月號深夜,騰訊關閉漂流瓶。此處采用指令查詢附近的人。
MongoDB實現附近的人
最近騰訊把“漂流瓶”這個張小龍引以為傲的產品下架,正所謂:匹夫無罪懷璧其罪,漂流瓶本無罪,但是被一些人利用傳播色情內容或廣告,因此在11月30號深夜,騰訊關閉漂流瓶。那么作為微信另外的一個大家熟悉的功能“附近的人”會不會被下架呢?今天我們暫不討論,咱們今天討論的是附近的人怎么實現,當然實現的方式有很多種:比如Redis,MySQL,Postgresql,MongoDB,全文檢索框架等。那今天我就使用MongoDB的LBS功能實現附近的人!
一、MongoDB簡介MongoDB是一種NoSql數據庫,是一個使用C++開發的高性能、開源,無模式的文檔型數據庫。MongoDB是面向文檔的,文檔以JSON格式,二進制JSON (BSON) 存儲在MongoDB中。官方網站地址是:https://www.mongodb.com/ 。主要特點有:高性能、高可用、水平擴展能力強。支持完全索引,查詢,支持服務器之間的數據復制和故障恢復。支持C++,Ruby,Java,Python,PHP,C,C#,Javascript,Perl等。
二、MongoDB與關系型數據庫比較關系型數據庫概念 | MongoDB概念 | 說明 |
---|---|---|
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
下載并安裝mongodb數據庫,下載并安裝Robomongo,如有不知可以咨詢小編!
四、數據準備往數據庫中批量插入數據,use mage切換到mage數據庫,執行db.user.insertMany(),user是文檔名,insertMany()是批量插入命令,里面傳入json數組,{"name":"楊帥哥", "address":"江西省南昌市青山湖區市場和質量監督管理局", "gender":1, loc:[115.993121,28.676436]}代表一條用戶數據,其中gender:0代表女1,代表男,loc是一個經緯度的數組,當然也可以是loc : { lng : 115.993067 , lat : 28.67606 },但官方推薦數組。
db.user.insertMany([ {"name":"楊帥哥", "address":"江西省南昌市青山湖區市場和質量監督管理局", "gender":1, loc:[115.993121,28.676436]}, {"name":"王美眉", "address":"江西省南昌市青山湖區創新一路職位小廚", "gender":0, loc:[116.000093,28.679402]}, {"name":"張美眉", "address":"江西省南昌市青山湖區紫陽大道1916號", "gender":0, loc:[115.999967,28.679743]}, {"name":"李美眉", "address":"江西省南昌市青山湖區云中城", "gender":0, loc:[115.995593,28.681632]}, {"name":"彭美眉", "address":"江西省南昌市青山湖區北京東路1666號", "gender":0, loc:[115.975543,28.679509]}, {"name":"趙美眉", "address":"江西省南昌市青山湖區市場一路大潤發", "gender":0, loc:[115.968428,28.669368]}, {"name":"廖美眉", "address":"江西省南昌市南昌縣奧林匹克中心", "gender":0, loc:[116.035262,28.677037]}, {"name":"余帥哥", "address":"江西省南昌市南昌縣科技學院瑤湖校區", "gender":1, loc:[116.02477,28.68667]}, {"name":"吳帥哥", "address":"江西省南昌市青山湖區創新一路母嬰店", "gender":1, loc:[116.002384,28.683865]}, {"name":"何帥哥", "address":"江西省南昌市青山湖區紫陽大道2999號", "gender":1, loc:[116.000821,28.68129]}, ])五、設置2d索引
因為我以二維平面上點的方式存儲的數據,想要進行LBS查詢,那么要設置2d索引。db.user.createIndex({"loc":"2d"})其中loc是索引的字段。
六、查詢附近200米的人查詢附近的人,首先的指導當前用戶所在的經緯度,如果不僅想要得到數據還要得到距離,那么可以使用$geoNear指令,如果距離自己去計算可以使用$near或者$geoWithin然后在手動計算距離。此處采用$geoNear指令查詢附近2000m的人。
db.user.aggregate({ $geoNear:{ near: [115.999567,28.681813], // 當前坐標 spherical: true, // 計算球面距離 distanceMultiplier: 6378137, // 地球半徑,單位是米,那么的除的記錄也是米 maxDistance: 2000/6378137, // 過濾條件2000米內,需要弧度 distanceField: "distance" // 距離字段別名 } })
到這兒為止,采用mongodb的2d平面索引就能完成附近的好友搜索了,如果想要了解更多,歡迎來撩小編!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19425.html
摘要:介紹是一種數據庫,它在數據存儲的形態上和這類關系數據庫有本質區別。存儲的基本對象是,所以我們把它稱為一種文檔數據庫,而文檔的集合則組成了。 MongoDB 介紹 MongoDB 是一種 NoSQL 數據庫,它在數據存儲的形態上和 MySQL 這類關系數據庫有本質區別。MongoDB 存儲的基本對象是 Document,所以我們把它稱為一種文檔數據庫,而文檔的集合則組成了 Collect...
閱讀 1303·2021-11-11 10:57
閱讀 3718·2021-09-07 10:10
閱讀 3442·2021-08-03 14:03
閱讀 3067·2019-08-30 13:45
閱讀 681·2019-08-29 11:19
閱讀 1040·2019-08-28 18:07
閱讀 3100·2019-08-26 13:55
閱讀 809·2019-08-26 12:17