巧妙的利用Mongodb做地理空间查询
来源:互联网 发布:美术教学软件 编辑:程序博客网 时间:2024/05/16 10:54
MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
在移动开发中,经常会用到定位的功能,例如美团、饿了么、猫眼电影等的app,都是使用了移动端定位,然后查找出自己地理位置附近的一些服务、信息。
地理位置索引是MongoDB早已被用户所熟知的特性,其球面(Spherical)和平面(Flat)两种模式,提供了丰富的地址位置的表示方式,如2d、2dsphere和GeoJSON等,对于移动App,如地图软件、打车软件、外卖软件,MongoDB强大的地理位置索引功能使其最佳选择;此外,对于物联网、智慧都市等领域,也需要大量的地理位置相关操作,这些都是MongoDB的竞技场。
本篇文章将会以Mongodb为数据库,讲述如何在数据库层级进行定位查询。
举个例子,我们需要做一个app,商家可以把自己的商品发布到app上,用户打开app查看离自己从近到远的商品。
如果没有地理位置的需求,那好办,直接插库然后查库就ok了,但是如果用到了地理位置,则需要用到Mongodb的一些位置功能。
Mongodb有一种地理空间索引,利用它可以进行经纬度的计算,下面继续介绍如何使用该功能。
下面以Nodejs+mongoose为例
1.创建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.创建Model
let goodsModel = mongoose.model(‘Goods’, goodsSchema)
3.插入数据
按照以下数据格式往数据库插入数据:
{
"name":"名字",
"price":12,
"location":[经度,纬度]
}
4.查看用户附近的数据
goodsModel.find( {
'location': {
$nearSphere: [
parseFloat( 经度 ),
parseFloat( 纬度 )
],
$maxDistance: 1000
}
} ).limit(10).skip(0).lean().exec();
总结:本次主要分享位置索引的用法,十分实用的一个功能,demo没有做得那么手把手,但是主要的骨架是出来了,可以自由发挥谢谢啊!
- 巧妙的利用Mongodb做地理空间查询
- 巧妙的利用Mongodb做地理空间查询
- 巧妙的利用Mongodb做地理空间查询
- 利用Mongodb做地理空间查询
- MongoDB的地理空间索引
- Mongodb地理空间索引
- Mongodb地理空间索引
- MongoDB——地理空间索引和查询
- MongoDB 副本集,偶数节点问,分片,地理空间查询
- mongodb地理空间索引原理
- springmvc mongodb 地理范围查询
- 地理空间语义的中文匹配与查询
- MongoDB小结26 - 地理空间索引
- 地理空间数据和大数据平台Spark结合能做的事情
- 巧妙利用连表查询拆分字符串
- 门户系统中空间查询、地理搜索及联网查询
- set 容器的巧妙利用
- 基于mongodb的地理检索实现
- PTA 1034. Head of a Gang (30)
- PowerDesigner(六)-物理数据模型(PDM逆向工程)
- WINDOWS服务器性能监控器的监视以及邮件预警配置
- 关闭 Intellij IDEA 拼写检查
- svn 管理项目问题
- 巧妙的利用Mongodb做地理空间查询
- Checking monitor must be configured to display at least 256 colors Could not ex
- android 7.0拍照崩溃适配
- 单选框、复选框、文本框的只读设置方法
- java 三大结构之Struct
- [生存志] 第135节 汉武心雄四海困穷
- JavaScript—使用arguments对象
- aix系统检查脚本
- How to get an APK smali code