久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MongoDB中怎么使用地理信息索引

共計(jì) 2308 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。

自動(dòng)寫代碼機(jī)器人,免費(fèi)開通

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

地理信息索引分為兩類: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)的信息都返回來,可以設(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ù)庫里面,除了一些支持的操作函數(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
}

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對(duì)丸趣 TV 的支持。

向 AI 問一下細(xì)節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計(jì)2308字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 平邑县| 鲁甸县| 安丘市| 全州县| 栖霞市| 台前县| 开平市| 阜南县| 金昌市| 平谷区| 化州市| 疏勒县| 澄城县| 南汇区| 塔河县| 石河子市| 肥东县| 阳信县| 长汀县| 枣庄市| 三门县| 上饶县| 城口县| 扶余县| 翁牛特旗| 万源市| 武安市| 新源县| 乐亭县| 利辛县| 河东区| 麻城市| 凤台县| 醴陵市| 成武县| 水城县| 古交市| 寻甸| 松江区| 仪征市| 富民县|