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