中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MongoDB學習筆記~地圖坐標的支持與附近點的查找

回到目錄

Mongodb這(zhe)個(ge)數據庫很不錯(cuo),它(ta)的(de)方法也不錯(cuo),為了實現坐標功能(neng),它(ta)甚至為我們提(ti)供了geo里的(de)一些算法,幫助我們通過某個(ge)點(dian)去位置和(he)查找N個(ge)附近的(de)點(dian)。

表(biao)面

在(zai)您存(cun)儲地理數據(ju)和編寫查(cha)詢(xun)條(tiao)件前(qian),首先,您必須選擇表面(mian)類型,這將被用在(zai)計算中。您所選擇的類型將會影(ying)響(xiang)您的數據(ju)如何被存(cun)儲,建立(li)的索引的類型,以(yi)及您的查(cha)詢(xun)的語(yu)法形(xing)式(shi)。

MongoDB提供了兩(liang)種表面類型:

球面

如果需要計算(suan)地理數據(ju)就像在一個類似于地球的球形表面(mian)(mian)上,您可以選擇球形表面(mian)(mian)來存儲數據(ju),這樣(yang)就可以使用  索引(yin)。

您可以按照坐標軸:經度,緯度 的方式把(ba)位置數(shu)據存儲為GeoJSON對象。GeoJSON的坐(zuo)標參(can)考系使用的是(shi)  數(shu)據。

平面

如果(guo)需要計算距離(li),就像(xiang)在(zai)一個歐幾里德平面上,您(nin)可(ke)以(yi)按照正常坐標(biao)對(dui)的(de)形(xing)式存儲位置數據并使用 索引(yin)。

測試類

    public class Zoo : NoSqlEntity
    {
        public string title { get; set; }
        public double[] loc { get; set; }

    }

測試數據

        [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 } });
        }

數據添加后的列表

查找你(ni)需(xu)要(yao)的(de)附近的(de)點

       [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);
            }
        }

回到目錄

為數據(ju)集合的(de)坐標(biao)字段(duan)添(tian)加索引

 

posted @ 2017-06-06 16:23  張占嶺  閱讀(2480)  評論(0)    收藏  舉報