Mongodb地理空间索引
1、索引:
? ? 建立索引既耗時(shí)也費(fèi)力,還需要消耗很多資源。使用{"bakckground":true}選項(xiàng)可以使這個(gè)過(guò)程在后臺(tái)完成,同時(shí)正常處理請(qǐng)求。如果不包括background
這個(gè)選項(xiàng),數(shù)據(jù)庫(kù)會(huì)阻塞建立索引期間的所有請(qǐng)求。阻塞的做法會(huì)讓索引建立得更快,同時(shí)也意味著應(yīng)用在此期間不能應(yīng)答。即便在后臺(tái)進(jìn)行也會(huì)對(duì)正常操作有些影響。
2、地理空間索引:
? ?通俗說(shuō)就是找到離當(dāng)前位置最近的N個(gè)場(chǎng)所。默認(rèn)情況下,地理空間索引假設(shè)值的范圍是-180~180。要是想使用其他值,可以通過(guò)ensureIndex的選項(xiàng)來(lái)指定最大最小值:
? ? >db.star.trek.ensureIndex({"light-years":"2d"},{"min":-1000,"max":1000});
? ? 這樣就創(chuàng)建了一個(gè)2000光年的空間索引。
? ? 對(duì)于"$near"的例子下面列舉一個(gè):
? ? >db.map.find({"gps":{"$near":[40,-73]}}).limit(10)
? ? 也可以使用geoNear來(lái)。
? ? ?>db.runCommand({geoNear:"map",near:[40,-70],num:10});
? ? ?geoNear會(huì)返回每個(gè)文檔到查詢點(diǎn)的距離。這個(gè)距離是以你插入的數(shù)據(jù)為單位的,如果按照經(jīng)緯度的角度插入,則距離就是經(jīng)緯度。
? ? ?還可以指定形狀內(nèi)的文檔。
? ?例如$center來(lái)找到圓形內(nèi)部的所有站點(diǎn)
? ? ?>db.map.find({"gps":{"$within":{"$center":[12,34],5]}}});
??
?3、mongo的地理空間索引假設(shè)索引內(nèi)容是在一個(gè)平面上的。這就意味著對(duì)于球體,比如地球,它并不是十分精確,尤其是在極地區(qū)域。具體來(lái)說(shuō),兩條經(jīng)線之間緯線的長(zhǎng)度在赤道和在育空地區(qū)是不一樣的,后者要短很多。
?
轉(zhuǎn)載于:https://www.cnblogs.com/kuugachen/p/4568989.html
總結(jié)
以上是生活随笔為你收集整理的Mongodb地理空间索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “与春老别更依依”下一句是什么
- 下一篇: 20135234mqy 实验四