欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

巧妙的利用Mongodb做地理空間查詢

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

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

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

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

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

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

如果沒有地理位置的需求,那好辦,直接插庫然后查庫就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ù)庫插入數(shù)據(jù):

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

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

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

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

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

相關(guān)文章

最新評論