欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MongoDB中怎么使用地理信息索引-創(chuàng)新互聯(lián)

MongoDB中怎么使用地理信息索引,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司是專業(yè)的花山網(wǎng)站建設(shè)公司,花山接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行花山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

地理信息索引分為兩類:2D平面索引,2DSphere球面索引。
在2D索引里面基本上能夠保存到信息就是坐標(biāo),也就是經(jīng)緯度坐標(biāo)。

范例:定義一個(gè)商鋪的集合
db.shop.insert({loc:[10,10]});
db.shop.insert({loc:[20,10]});
db.shop.insert({loc:[10,20]});
db.shop.insert({loc:[20,20]});
db.shop.insert({loc:[100,100]});
db.shop.insert({loc:[80,30]});
db.shop.insert({loc:[30,50]});

范例:為s> db.shop.createIndex({"loc":"2d"})
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}hop集合定義2D索引

這個(gè)時(shí)候shop集合就可以實(shí)現(xiàn)坐標(biāo)位置的查詢了。有兩種查詢方式:
  ● “$near”查詢:查詢距離某個(gè)點(diǎn)最近的坐標(biāo)點(diǎn)。
  ● "$geoWithin"查詢:查詢某個(gè)形狀內(nèi)的點(diǎn)。

范例:假設(shè)現(xiàn)在的坐標(biāo)是:[30,30]
> db.shop.find({"loc":{"$near":[30,30]}})
{ "_id" : ObjectId("599396cd0184ff511bf02bc6"), "loc" : [ 20, 20 ] }
{ "_id" : ObjectId("599396ce0184ff511bf02bc9"), "loc" : [ 30, 50 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc4"), "loc" : [ 20, 10 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc5"), "loc" : [ 10, 20 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc3"), "loc" : [ 10, 10 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc8"), "loc" : [ 80, 30 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc7"), "loc" : [ 100, 100 ] }

如果執(zhí)行了以上的查詢,實(shí)際上會(huì)將數(shù)據(jù)集合里面的前100個(gè)點(diǎn)的信息都返回來(lái),可以設(shè)置距離范圍。

范例:設(shè)置查詢的距離范圍
> db.shop.find({"loc":{"$near":[30,30],"$maxDistance":20}})
{ "_id" : ObjectId("599396cd0184ff511bf02bc6"), "loc" : [ 20, 20 ] }
{ "_id" : ObjectId("599396ce0184ff511bf02bc9"), "loc" : [ 30, 50 ] }

但是需要注意一點(diǎn),在2D索引里面雖然支持大距離,但是不支持最小距離。
但是也可以設(shè)置一個(gè)查詢的范圍,使用“$geoWithin”查詢,可以設(shè)置的范圍有:
矩形范圍($box):{"$box":[[x1,y1],[x2,y2]]}
圓形范圍($center):{"$center":[[x1,y1],r]}
多邊形($polygon):{"$polygon":[[x1,y1],[x2,y2],[x3,y3],...]}

范例:查詢矩形范圍
> db.shop.find({"loc":{"$geoWithin":{$box:[[30,30],[80,80]]}}})
{ "_id" : ObjectId("599396ce0184ff511bf02bc9"), "loc" : [ 30, 50 ] }
{ "_id" : ObjectId("599396cd0184ff511bf02bc8"), "loc" : [ 80, 30 ] }

范例:查詢圓形范圍
> db.shop.find({"loc":{"$geoWithin":{$center:[[30,30],20]}}})
{ "_id" : ObjectId("599396cd0184ff511bf02bc6"), "loc" : [ 20, 20 ] }
{ "_id" : ObjectId("599396ce0184ff511bf02bc9"), "loc" : [ 30, 50 ] }

在MongoDB數(shù)據(jù)庫(kù)里面,除了一些支持的操作函數(shù)之外,還有一個(gè)重要的命令:runCommand(),這個(gè)函數(shù)可以執(zhí)行特定的MongoDB命令。

范例:利用runCommand()實(shí)現(xiàn)信息查詢
> db.runCommand({"geoNear":"shop","near":[30,30],"maxDistance":20,num:2})
{
        "results" : [
                {
                        "dis" : 14.142135623730951,
                        "obj" : {
                                "_id" : ObjectId("599396cd0184ff511bf02bc6"),
                                "loc" : [
                                        20,
                                        20
                                ]
                        }
                },
                {
                        "dis" : 20,
                        "obj" : {
                                "_id" : ObjectId("599396ce0184ff511bf02bc9"),
                                "loc" : [
                                        30,
                                        50
                                ]
                        }
                }
        ],
        "stats" : {
                "nscanned" : 4,
                "objectsLoaded" : 2,
                "avgDistance" : 17.071067811865476,
                "maxDistance" : 20,
                "time" : 0
        },
        "ok" : 1
}

這類的命令可以說(shuō)是MongoDB之中最為基礎(chǔ)的命令。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

當(dāng)前題目:MongoDB中怎么使用地理信息索引-創(chuàng)新互聯(lián)
文章來(lái)源:http://chinadenli.net/article0/hhjoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化用戶體驗(yàn)定制網(wǎng)站品牌網(wǎng)站設(shè)計(jì)域名注冊(cè)網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)