MongoDB實現地理位置查詢

Mongodb地理位置查詢文檔
MongoDB支持地理位置索引,可以直接用于位置距離計算和查詢。查詢結果默認將會由近到遠排序,且查詢結果也包含目標點對象、距離目標點的距離等信息。

geoNear是MongoDB原生支持的查詢函數,所以性能上也做到了高度的優化,完全可以應付生產環境的壓力。geoNear

兩種索引方式

2d index:
使用2d index 能夠將數據作為2維平面上的點存儲起來, 在MongoDB 2.2以前 推薦使用2d index索引。

2dsphere index:
2dsphere index 支持球體的查詢和計算,同時它支持數據存儲為GeoJSON 和傳統坐標。

3種距離單位:

米(meters)
平面單位(flat units,可以理解為經緯度的“一度”)
弧度(radians)

2d索引能同時支持$center和$centerSphere,
2dsphere索引支持$centerSphere。
$center默認是度,$centerSphere默認距離是弧度

//mongodb 實現lbs查詢
/***************************
首先需對col里的loc設置索引為'2d',方可進行$near查詢
db.col.ensureIndex({'loc':'2d'})
db.col.getIndexes()
****************************/
// maxDistance單位是弧度, 地球表面1弧度距離約為6378137米, 0.001弧度距離為6378米
db.col.find({"loc": {$near: [longtitude, lattitude], $maxDistance:0.1}})

樣例代碼

db.user.find({"geo": {$near: [118.10388605,24.48923061], $maxDistance:0.1}},{id:1, name:1, state:1, geo:1}).limit(1).pretty()

Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容