You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作MongoDB Shell:调用嵌套字段查找极值城市

解决MongoDB嵌套字段查询:获取极值城市

嘿,我猜你是卡在了嵌套文档的字段访问上对吧?你的数据里lat和lng是嵌套在location子文档里的,直接用lat肯定找不到,MongoDB需要用**点符号(dot notation)**来定位嵌套字段,我给你写好具体的实现代码,一步到位解决问题。

核心问题说明

你的数据结构里,纬度和经度是存在location这个子对象里的:

{'location': {'lat': 39.90419989999999, 'lng': 116.4073963}, 'City': 'Beijing', ...}

所以要访问纬度,必须写成location.lat,经度则是location.lng,这是MongoDB查询嵌套字段的标准方式。

Python操作MongoDB的实现代码

下面是用pymongo库获取最东、最西、最北、最南城市的完整代码,你只需要替换成自己的数据库和集合名称:

from pymongo import MongoClient

# 连接MongoDB(根据你的实际连接配置调整,比如需要认证的话加上用户名密码)
client = MongoClient('mongodb://localhost:27017/')
db = client['你的数据库名称']
city_collection = db['你的集合名称']

# 查询最北城市(纬度值最大)
northern_city = city_collection.find_one(sort=[("location.lat", -1)])
print(f"最北城市:{northern_city['City']},纬度:{northern_city['location']['lat']}")

# 查询最南城市(纬度值最小)
southern_city = city_collection.find_one(sort=[("location.lat", 1)])
print(f"最南城市:{southern_city['City']},纬度:{southern_city['location']['lat']}")

# 查询最东城市(经度值最大)
eastern_city = city_collection.find_one(sort=[("location.lng", -1)])
print(f"最东城市:{eastern_city['City']},经度:{eastern_city['location']['lng']}")

# 查询最西城市(经度值最小)
western_city = city_collection.find_one(sort=[("location.lng", 1)])
print(f"最西城市:{western_city['City']},经度:{western_city['location']['lng']}")

额外优化建议

如果你的数据量很大,建议给location.lat和location.lng创建复合索引,能大幅提升查询速度(只需要执行一次即可):

city_collection.create_index([("location.lat", 1), ("location.lng", 1)])

这样应该就能顺利拿到你想要的四个极值城市啦!

内容的提问来源于stack exchange,提问作者m.linus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:05:22