利用Mongodb做地理空間查詢
MongoDB
是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
前言
在移動開發中,經常會用到定位的功能,例如美團、餓了么、貓眼電影等的app,都是使用了移動端定位,然后查找出自己地理位置附近的一些服務、信息。
所以本篇文章將會以Mongodb為數據庫,講述如何在數據庫層級進行定位查詢。
分析
舉個例子,我們需要做一個app,商家可以把自己的商品發布到app上,用戶打開app查看離自己從近到遠的商品。
如果沒有地理位置的需求,那好辦,直接插庫然后查庫就ok了,但是如果用到了地理位置,則需要用到Mongodb的一些位置功能。
Mongodb有一種地理空間索引,利用它可以進行經緯度的計算,下面繼續介紹如何使用該功能。
實現
下面以Nodejs+mongoose為例
-
創建Schema:
const mongoose = require( 'mongoose' ); let goodsSchema = new mongoose.Schema( { name: String, price: Number, location: { type: [ Number ], index: { type: '2dsphere', sparse: true } } }, { collection: 'Goods' } )
-
創建Model
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沒有做得那么手把手,但是主要的骨架是出來了,可以自由發揮~
來自:http://www.jianshu.com/p/9c8319739bee
本文由用戶 mylimo 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!