利用Mongodb做地理空间查询
2016-07-26 10:38
288 查看
前言
在移动开发中,经常会用到定位的功能,例如美团、饿了么、猫眼电影等的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没有做得那么手把手,但是主要的骨架是出来了,可以自由发挥~备注: 这是后台需要弄的,android,ios,web需要使用定位服务找到用户的经纬度,传给后台即可
相关文章推荐
- mongodb的介绍以及安装
- MongoDB备份与恢复
- MongoDB Replica set + sharding
- 使用python语言操作MongoDB
- 1、mongodb的安装及简单应用
- MongoDB学习笔记(0)windows的安装与配置
- Windows安装Mongodb
- MongoDB安装图文教程
- MongoDB 增删改查
- MongoDB安装图文教程
- mongodb读取从库延时数据问题的一种解决方案
- Mongodb无法启动:The default storage engine
- MongoDB 3.2配置文件directoryPerDB参数,无法重启
- mongodb常用指令
- MongoDB的基本指令
- Mongodb的安装
- java的输入输出,操控mongodb
- Mongodb 3节点 Rep set +sharding 配置
- MongoDB单个集合的备份与还原命令
- MongoDB学习笔记—权限管理