随着地理位置感知数据及地图数据技术变得愈来愈重要,存储和查询经纬度数据变得更加重要,MongoDB给开发人员提供了存储和查询经纬度数据的一站式解决方案,帮助开发人员更好的处理空间数据,下面我将提出使用MongoDB存储和查询经纬度数据的最好实践。
### 一、配置空间索引
MongoDB的空间特性是使用2d或2dsphere索引提供的,当你要履行空间查询时,你可使用2d或2dsphere这两种索引,如果想要使用2dsphere索引,需要支持地理索引,可以在字段或文档上创建地理索引,这个地理索引包括位置坐标(“经度和纬度”):
db.collection.createIndex({:"2dsphere"})
### 二、数据格式
为了使用MongoDB存储和查询经纬度数据,一定要先将经纬度数据转换成特定的格式,这类格式被称为GeoJSON,它代表地理上的一个几何空间。GeoJSON的格式可以看作是一个数组:
{
"type": "Feature", "properties": {
"name": String },
"geometry": { "type": "Point",
"coordinates": [ long, lat ] }
}
### 三、空间查询
MongoDB可使用经纬度字段的2dsphere索引来履行空间查询,空间查询的核心,空间查询可以以查询语句的情势提供:
db.collection.find({
"": {
$near: { $geometry: {
type: "Point", coordinates: [
,
] },
$maxDistance:
} }
})
通过$near操作符,MongoDB会在2dsphere索引字段中找出指定距离($maxDistance)内的文档。
### 四、性能的优化
为MongoDB的查询和索引性能提升,应当坚持查询会不会可以索引,避免使用$near查询,MongoDB的查询可以利用2d索引中的排序(sorted by distance),而不是计算每一个文档的距离来排序,也能够建立一个分层索引,它可以大大提高性能:
db.collection.createIndex({: "2dsphere", name:1})
### 五、监控MongoDB性能
存储和查询经纬度数据就像AfterBurner,在查询数据之前,你需要确保索引被设置正确,性能是良好的,使用MongoDB的最好实践,可使用监控工具来检查空间查询,以查看查询会不会有良好的性能。
总之,存储和查询经纬度数据的最好实践是支持通过MongoDB创建2dsphere索引,将原始数据转换为GeoJSON格式,使用空间查询语句查询,然后利用监控工具来优化查询性能。如此,就能够更加有效的处理经纬度数据了。
本文来源:https://www.yuntue.com/post/228623.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏