如何在PyMongo中将MongoDB数组元素赋值给变量
提取MongoDB数组中的元素值
你的代码已经匹配到了包含health:15的文档,但stats字段返回的是包含单个字典的列表,直接转字符串会得到[{'health': 15}]。要拿到具体数值,需要对列表和字典做进一步索引:
修改后的代码如下:
server = pymongo.MongoClient(url) pokemon_python = server.pokemon_python gonestarter = pokemon_python.gonestarter # 查询匹配的文档,仅返回stats字段中符合条件的元素 bulba_health = gonestarter.find_one({"stats":{"$elemMatch":{"health": 15}}}, {"stats":{"$elemMatch":{"health": 15}}}) # 提取列表第一个元素中的health值 bulba_health_value = bulba_health["stats"][0]["health"] print(f"Health: {bulba_health_value}")
关键修改说明:
bulba_health["stats"]返回的是列表[{'health': 15}],用[0]可获取列表中的第一个字典元素- 再通过
["health"]从字典中取出对应的数值15
如果stats数组中可能存在多个匹配元素,可通过循环遍历获取所有值:
for stat in bulba_health["stats"]: print(f"Health: {stat['health']}")
内容的提问来源于stack exchange,提问作者Kawalpreet Singh_ 52
相关产品推荐
相关产品推荐

