国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB實(shí)現(xiàn)附近的人

yeyan1996 / 3633人閱讀

摘要:實(shí)現(xiàn)附近的人最近騰訊把漂流瓶這個(gè)張小龍引以為傲的產(chǎn)品下架,正所謂匹夫無(wú)罪懷璧其罪,漂流瓶本無(wú)罪,但是被一些人利用傳播色情內(nèi)容或廣告,因此在月號(hào)深夜,騰訊關(guān)閉漂流瓶。此處采用指令查詢附近的人。

MongoDB實(shí)現(xiàn)附近的人

最近騰訊把“漂流瓶”這個(gè)張小龍引以為傲的產(chǎn)品下架,正所謂:匹夫無(wú)罪懷璧其罪,漂流瓶本無(wú)罪,但是被一些人利用傳播色情內(nèi)容或廣告,因此在11月30號(hào)深夜,騰訊關(guān)閉漂流瓶。那么作為微信另外的一個(gè)大家熟悉的功能“附近的人”會(huì)不會(huì)被下架呢?今天我們暫不討論,咱們今天討論的是附近的人怎么實(shí)現(xiàn),當(dāng)然實(shí)現(xiàn)的方式有很多種:比如Redis,MySQL,Postgresql,MongoDB,全文檢索框架等。那今天我就使用MongoDB的LBS功能實(shí)現(xiàn)附近的人!

一、MongoDB簡(jiǎn)介

MongoDB是一種NoSql數(shù)據(jù)庫(kù),是一個(gè)使用C++開(kāi)發(fā)的高性能、開(kāi)源,無(wú)模式的文檔型數(shù)據(jù)庫(kù)。MongoDB是面向文檔的,文檔以JSON格式,二進(jìn)制JSON (BSON) 存儲(chǔ)在MongoDB中。官方網(wǎng)站地址是:https://www.mongodb.com/ 。主要特點(diǎn)有:高性能、高可用、水平擴(kuò)展能力強(qiáng)。支持完全索引,查詢,支持服務(wù)器之間的數(shù)據(jù)復(fù)制和故障恢復(fù)。支持C++,Ruby,Java,Python,PHP,C,C#,Javascript,Perl等。

二、MongoDB與關(guān)系型數(shù)據(jù)庫(kù)比較
關(guān)系型數(shù)據(jù)庫(kù)概念 MongoDB概念 說(shuō)明
database database 數(shù)據(jù)庫(kù)
table collection 數(shù)據(jù)庫(kù)表/集合
row document 數(shù)據(jù)記錄行/文檔
column field 數(shù)據(jù)字段/域
index index 索引

三、準(zhǔn)備工作

下載并安裝mongodb數(shù)據(jù)庫(kù),下載并安裝Robomongo,如有不知可以咨詢小編!

四、數(shù)據(jù)準(zhǔn)備

往數(shù)據(jù)庫(kù)中批量插入數(shù)據(jù),use mage切換到mage數(shù)據(jù)庫(kù),執(zhí)行db.user.insertMany(),user是文檔名,insertMany()是批量插入命令,里面?zhèn)魅雑son數(shù)組,{"name":"楊帥哥", "address":"江西省南昌市青山湖區(qū)市場(chǎng)和質(zhì)量監(jiān)督管理局", "gender":1, loc:[115.993121,28.676436]}代表一條用戶數(shù)據(jù),其中g(shù)ender:0代表女1,代表男,loc是一個(gè)經(jīng)緯度的數(shù)組,當(dāng)然也可以是loc : { lng : 115.993067 , lat : 28.67606 },但官方推薦數(shù)組。

db.user.insertMany([
 {"name":"楊帥哥", "address":"江西省南昌市青山湖區(qū)市場(chǎng)和質(zhì)量監(jiān)督管理局", "gender":1, loc:[115.993121,28.676436]},
 {"name":"王美眉", "address":"江西省南昌市青山湖區(qū)創(chuàng)新一路職位小廚", "gender":0, loc:[116.000093,28.679402]},
 {"name":"張美眉", "address":"江西省南昌市青山湖區(qū)紫陽(yáng)大道1916號(hào)", "gender":0, loc:[115.999967,28.679743]},
 {"name":"李美眉", "address":"江西省南昌市青山湖區(qū)云中城", "gender":0, loc:[115.995593,28.681632]},
 {"name":"彭美眉", "address":"江西省南昌市青山湖區(qū)北京東路1666號(hào)", "gender":0, loc:[115.975543,28.679509]},
 {"name":"趙美眉", "address":"江西省南昌市青山湖區(qū)市場(chǎng)一路大潤(rùn)發(fā)", "gender":0, loc:[115.968428,28.669368]},
 {"name":"廖美眉", "address":"江西省南昌市南昌縣奧林匹克中心", "gender":0, loc:[116.035262,28.677037]},
 {"name":"余帥哥", "address":"江西省南昌市南昌縣科技學(xué)院瑤湖校區(qū)", "gender":1, loc:[116.02477,28.68667]},
 {"name":"吳帥哥", "address":"江西省南昌市青山湖區(qū)創(chuàng)新一路母嬰店", "gender":1, loc:[116.002384,28.683865]},
 {"name":"何帥哥", "address":"江西省南昌市青山湖區(qū)紫陽(yáng)大道2999號(hào)", "gender":1, loc:[116.000821,28.68129]},
])
五、設(shè)置2d索引

因?yàn)槲乙远S平面上點(diǎn)的方式存儲(chǔ)的數(shù)據(jù),想要進(jìn)行LBS查詢,那么要設(shè)置2d索引。db.user.createIndex({"loc":"2d"})其中l(wèi)oc是索引的字段。

六、查詢附近200米的人

查詢附近的人,首先的指導(dǎo)當(dāng)前用戶所在的經(jīng)緯度,如果不僅想要得到數(shù)據(jù)還要得到距離,那么可以使用$geoNear指令,如果距離自己去計(jì)算可以使用$near或者$geoWithin然后在手動(dòng)計(jì)算距離。此處采用$geoNear指令查詢附近2000m的人。

db.user.aggregate({
    $geoNear:{
        near: [115.999567,28.681813], // 當(dāng)前坐標(biāo)
        spherical: true, // 計(jì)算球面距離
        distanceMultiplier: 6378137, // 地球半徑,單位是米,那么的除的記錄也是米
        maxDistance: 2000/6378137, // 過(guò)濾條件2000米內(nèi),需要弧度
        distanceField: "distance" // 距離字段別名
    }
})

到這兒為止,采用mongodb的2d平面索引就能完成附近的好友搜索了,如果想要了解更多,歡迎來(lái)撩小編!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19425.html

相關(guān)文章

  • MongoDB 簡(jiǎn)單介紹以及安裝

    摘要:介紹是一種數(shù)據(jù)庫(kù),它在數(shù)據(jù)存儲(chǔ)的形態(tài)上和這類關(guān)系數(shù)據(jù)庫(kù)有本質(zhì)區(qū)別。存儲(chǔ)的基本對(duì)象是,所以我們把它稱為一種文檔數(shù)據(jù)庫(kù),而文檔的集合則組成了。 MongoDB 介紹 MongoDB 是一種 NoSQL 數(shù)據(jù)庫(kù),它在數(shù)據(jù)存儲(chǔ)的形態(tài)上和 MySQL 這類關(guān)系數(shù)據(jù)庫(kù)有本質(zhì)區(qū)別。MongoDB 存儲(chǔ)的基本對(duì)象是 Document,所以我們把它稱為一種文檔數(shù)據(jù)庫(kù),而文檔的集合則組成了 Collect...

    tianyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<