最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

巧妙的利用Mongodb做地理空間查詢(xún)

 更新時(shí)間:2017年02月28日 09:38:24   作者:落葉的博客  
本篇文章將會(huì)以Mongodb為數(shù)據(jù)庫(kù),講述如何在數(shù)據(jù)庫(kù)層級(jí)進(jìn)行定位查詢(xún)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧

MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

在移動(dòng)開(kāi)發(fā)中,經(jīng)常會(huì)用到定位的功能,例如美團(tuán)、餓了么、貓眼電影等的app,都是使用了移動(dòng)端定位,然后查找出自己地理位置附近的一些服務(wù)、信息。

地理位置索引是MongoDB早已被用戶(hù)所熟知的特性,其球面(Spherical)和平面(Flat)兩種模式,提供了豐富的地址位置的表示方式,如2d、2dsphere和GeoJSON等,對(duì)于移動(dòng)App,如地圖軟件、打車(chē)軟件、外賣(mài)軟件,MongoDB強(qiáng)大的地理位置索引功能使其最佳選擇;此外,對(duì)于物聯(lián)網(wǎng)、智慧都市等領(lǐng)域,也需要大量的地理位置相關(guān)操作,這些都是MongoDB的競(jìng)技場(chǎng)。

本篇文章將會(huì)以Mongodb為數(shù)據(jù)庫(kù),講述如何在數(shù)據(jù)庫(kù)層級(jí)進(jìn)行定位查詢(xún)。

舉個(gè)例子,我們需要做一個(gè)app,商家可以把自己的商品發(fā)布到app上,用戶(hù)打開(kāi)app查看離自己從近到遠(yuǎn)的商品。

如果沒(méi)有地理位置的需求,那好辦,直接插庫(kù)然后查庫(kù)就ok了,但是如果用到了地理位置,則需要用到Mongodb的一些位置功能。

Mongodb有一種地理空間索引,利用它可以進(jìn)行經(jīng)緯度的計(jì)算,下面繼續(xù)介紹如何使用該功能。

下面以Nodejs+mongoose為例

1.創(chuàng)建Schema:

  const mongoose = require( 'mongoose' );
  let goodsSchema = new mongoose.Schema( {
   name: String,
   price: Number,
   location: {
     type: [ Number ],
     index: {
       type: '2dsphere',
       sparse: true
     }
   }
  }, {
   collection: 'Goods'
  } )

2.創(chuàng)建Model

    let goodsModel = mongoose.model(‘Goods', goodsSchema)

3.插入數(shù)據(jù)

    按照以下數(shù)據(jù)格式往數(shù)據(jù)庫(kù)插入數(shù)據(jù):

  {
   "name":"名字",
   "price":12,
   "location":[經(jīng)度,緯度]
  }

4.查看用戶(hù)附近的數(shù)據(jù)

  goodsModel.find( {
     'location': {
       $nearSphere: [
         parseFloat( 經(jīng)度 ),
         parseFloat( 緯度 )
       ],
       $maxDistance: 1000
     }
   } ).limit(10).skip(0).lean().exec();

總結(jié):本次主要分享位置索引的用法,十分實(shí)用的一個(gè)功能,demo沒(méi)有做得那么手把手,但是主要的骨架是出來(lái)了,可以自由發(fā)揮謝謝?。?/p>

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Eclipse中配置Maven build打包的方法步驟

    Eclipse中配置Maven build打包的方法步驟

    這篇文章主要介紹了Eclipse中配置Maven build打包的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Spring教程之refresh()執(zhí)行邏輯淺析

    Spring教程之refresh()執(zhí)行邏輯淺析

    這篇文章主要給大家介紹了關(guān)于Spring教程之refresh()執(zhí)行邏輯的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java8中List轉(zhuǎn)換String字符串幾種方式

    Java8中List轉(zhuǎn)換String字符串幾種方式

    這篇文章主要給大家介紹了關(guān)于Java8中List轉(zhuǎn)換String字符串的幾種方式,在實(shí)際開(kāi)發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,文中給出了幾種方法的示例代碼,需要的朋友可以參考下
    2023-07-07
  • 帶你詳細(xì)了解Spring Security的注解方式開(kāi)發(fā)

    帶你詳細(xì)了解Spring Security的注解方式開(kāi)發(fā)

    這篇文章主要介紹了詳解spring security四種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • java二進(jìn)制運(yùn)算基礎(chǔ)知識(shí)點(diǎn)詳解

    java二進(jìn)制運(yùn)算基礎(chǔ)知識(shí)點(diǎn)詳解

    在本文里小編給大家分享了關(guān)于java二進(jìn)制運(yùn)算基礎(chǔ)知識(shí)點(diǎn)以及實(shí)例代碼內(nèi)容,需要的朋友們參考學(xué)習(xí)下。
    2019-08-08
  • 如何利用Java實(shí)現(xiàn)MySQL的數(shù)據(jù)變化監(jiān)聽(tīng)

    如何利用Java實(shí)現(xiàn)MySQL的數(shù)據(jù)變化監(jiān)聽(tīng)

    在高并發(fā)和大數(shù)據(jù)環(huán)境下,實(shí)時(shí)獲取?MySQL?數(shù)據(jù)庫(kù)的增量變化對(duì)數(shù)據(jù)同步、數(shù)據(jù)分析、緩存更新等場(chǎng)景至關(guān)重要,下面我們就來(lái)看看如何通過(guò)Java實(shí)現(xiàn)MySQL的數(shù)據(jù)變化監(jiān)聽(tīng)吧
    2025-02-02
  • maven assembly打包生成Java應(yīng)用啟動(dòng)腳本bat和sh的方法

    maven assembly打包生成Java應(yīng)用啟動(dòng)腳本bat和sh的方法

    springboot應(yīng)用通過(guò)maven插件appassembler-maven-plugi生成啟動(dòng)腳本bat和sh,這篇文章主要介紹了maven assembly打包生成Java應(yīng)用啟動(dòng)腳本bat和sh,需要的朋友可以參考下
    2022-11-11
  • SpringBoot整合Mybatis?LocalDateTime?映射失效的解決

    SpringBoot整合Mybatis?LocalDateTime?映射失效的解決

    這篇文章主要介紹了SpringBoot整合Mybatis?LocalDateTime?映射失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實(shí)現(xiàn)

    SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java面試題之MD5加密的安全性詳解

    Java面試題之MD5加密的安全性詳解

    MD5 是 Message Digest Algorithm 的縮寫(xiě),譯為信息摘要算法,它是 Java 語(yǔ)言中使用很廣泛的一種加密算法。本文將通過(guò)示例討論下MD5的安全性,感興趣的可以了解一下
    2022-10-10

最新評(píng)論

若尔盖县| 黔东| 泰州市| 库尔勒市| 昔阳县| 荔浦县| 乐山市| 铁岭县| 余庆县| 台东市| 东山县| 凤阳县| 高唐县| 南投市| 盐城市| 旬阳县| 扶沟县| 西丰县| 怀宁县| 鹤岗市| 泸溪县| 千阳县| 田阳县| 城步| 卢龙县| 正宁县| 榆社县| 邻水| 诸城市| 同心县| 泸州市| 扎赉特旗| 云安县| 商河县| 台北县| 连平县| 梓潼县| 长武县| 天等县| 宿松县| 钦州市|