MongoDB
是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。android
在移動開發中,常常會用到定位的功能,例如美團、餓了麼、貓眼電影等的app,都是使用了移動端定位,而後查找出本身地理位置附近的一些服務、信息。ios
因此本篇文章將會以Mongodb爲數據庫,講述如何在數據庫層級進行定位查詢。web
舉個例子,咱們須要作一個app,商家能夠把本身的商品發佈到app上,用戶打開app查看離本身從近到遠的商品。數據庫
若是沒有地理位置的需求,那好辦,直接插庫而後查庫就ok了,可是若是用到了地理位置,則須要用到Mongodb的一些位置功能。app
Mongodb有一種地理空間索引,利用它能夠進行經緯度的計算,下面繼續介紹如何使用該功能。mongoose
下面以Nodejs+mongoose爲例分佈式
const mongoose = require( 'mongoose' ); let goodsSchema = new mongoose.Schema( { name: String, price: Number, location: { type: [ Number ], index: { type: '2dsphere', sparse: true } } }, { collection: 'Goods' } )
let goodsModel = mongoose.model(‘Goods’, goodsSchema)
按照如下數據格式往數據庫插入數據: { "name":"名字", "price":12, "location":[經度,緯度] }
goodsModel.find( { 'location': { $nearSphere: [ parseFloat( 經度 ), parseFloat( 緯度 ) ], $maxDistance: 1000 } } ).limit(10).skip(0).lean().exec();
本次主要分享位置索引的用法,十分實用的一個功能,demo沒有作得那麼手把手,可是主要的骨架是出來了,能夠自由發揮~性能
備註: 這是後臺須要弄的,android,ios,web須要使用定位服務找到用戶的經緯度,傳給後臺便可ui