MongoDB学习笔记~地图坐标的支持与附近点的查找
生活随笔
收集整理的這篇文章主要介紹了
MongoDB学习笔记~地图坐标的支持与附近点的查找
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
回到目錄
Mongodb這個數(shù)據(jù)庫很不錯,它的方法也不錯,為了實現(xiàn)坐標功能,它甚至為我們提供了geo里的一些算法,幫助我們通過某個點去位置和查找N個附近的點。
表面
在您存儲地理數(shù)據(jù)和編寫查詢條件前,首先,您必須選擇表面類型,這將被用在計算中。您所選擇的類型將會影響您的數(shù)據(jù)如何被存儲,建立的索引的類型,以及您的查詢的語法形式。
MongoDB提供了兩種表面類型:
球面如果需要計算地理數(shù)據(jù)就像在一個類似于地球的球形表面上,您可以選擇球形表面來存儲數(shù)據(jù),這樣就可以使用?2dsphere?索引。
您可以按照坐標軸:經(jīng)度,緯度?的方式把位置數(shù)據(jù)存儲為GeoJSON對象。GeoJSON的坐標參考系使用的是?WGS84?數(shù)據(jù)。
平面如果需要計算距離,就像在一個歐幾里德平面上,您可以按照正常坐標對的形式存儲位置數(shù)據(jù)并使用?2d索引。
測試類
public class Zoo : NoSqlEntity{public string title { get; set; }public double[] loc { get; set; }}測試數(shù)據(jù)
[TestMethod]public void Addloc(){for (int i = -180; i < 180; i += 5)MongoDbClient.MongoManager<Zoo>.Instance.InsertOne(new Zoo { title = "北京" + i, loc = new double[] { i, i } });}數(shù)據(jù)添加后的列表
查找你需要的附近的點
[TestMethod]public void Findloc(){var filter = Builders<Zoo>.Filter.Near(i => i.loc, 50, 50, maxDistance: 50);var result = MongoDbClient.MongoManager<Zoo>.Instance.Find(filter);foreach (var item in result.ToList()){Console.WriteLine(item.title);}}回到目錄
為數(shù)據(jù)集合的坐標字段添加索引
?
轉載于:https://www.cnblogs.com/lori/p/6952208.html
總結
以上是生活随笔為你收集整理的MongoDB学习笔记~地图坐标的支持与附近点的查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chromium 操作系统即将支持所有
- 下一篇: Chrome 隐藏 SSL 证书信息 禁