如何在MongoDB中表示北纬、东经格式的经纬度坐标
MongoDB存储北纬东经格式坐标的正确方案
第一步:方位标识转数值规则
按照国际通用坐标数值转换标准,不需要额外存储N、E等方位字符,直接按规则转换为正负数值即可:
- 经度:东经取正值,西经取负值
- 纬度:北纬取正值,南纬取负值
你当前持有的北纬、东经格式坐标,直接提取两个数值即可使用,无需额外存储方位标识。
第二步:MongoDB推荐存储结构
MongoDB官方推荐使用符合GeoJSON规范的结构存储坐标,可直接适配内置的地理空间查询、索引能力:
注意:GeoJSON的
coordinates字段顺序固定为先存经度,后存纬度,顺序写反会导致所有地理查询结果出错。
示例存储结构(以北纬39.9°、东经116.4°为例):
{ "_id": ObjectId("xxx"), "location": { "type": "Point", "coordinates": [116.4, 39.9] }, // 其他业务字段 }
配套操作建议
- 存储时坐标必须为
double浮点类型,不要存储为字符串格式,否则无法创建地理索引 - 如需使用附近地点查询、范围查询等能力,创建2dsphere地理索引:
db.yourCollectionName.createIndex({ location: "2dsphere" }) - 后续如果涉及南纬、西经坐标入库,直接按转换规则给对应数值加负号即可,无需新增字段存储方位信息。
内容的提问来源于stack exchange,提问作者officially for learning
相关产品推荐
相关产品推荐

