如何在Python中正确计算并打印MongoDB内JSON中的货币值
如何正确在Python中处理MongoDB存储的汇率文档值
首先,咱们先看看你现有代码的问题:你用列表推导式[AED['AED'] for AED in collection.find({})]只提取了每个文档里的AED字段值,再执行currency*2只是把这个列表重复了一遍(比如[x] * 2会变成[x,x]),并不是对数值本身做计算。接下来我会分场景给你演示正确的处理方式:
场景1:打印文档里所有货币的汇率
如果要查看所有货币的键值对,可以遍历文档并输出:
import pymongo uri = "mongodb://127.0.0.1:27017" client = pymongo.MongoClient(uri) database = client['countries_db'] collection = database['currency'] # 因为你的集合里应该只有一个汇率文档,用find_one()更高效 exchange_doc = collection.find_one({}) # 过滤掉_id字段,只保留汇率数据 currency_rates = {k: v for k, v in exchange_doc.items() if k != "_id"} print("当前所有货币汇率:") for currency, rate in currency_rates.items(): print(f"{currency}: {rate}")
场景2:对单个货币值做数值计算
比如你想把AED的汇率乘以2(是数值运算,不是列表重复):
import pymongo uri = "mongodb://127.0.0.1:27017" client = pymongo.MongoClient(uri) database = client['countries_db'] collection = database['currency'] # 提取单个货币的汇率值 aed_rate = collection.find_one({}).get('AED', 0) # 用get避免字段不存在时报错 # 执行数值计算 calculated_aed = aed_rate * 2 print(f"AED汇率乘以2的结果:{calculated_aed}")
场景3:对所有货币值批量计算
比如给所有汇率都乘以2,然后输出结果:
import pymongo uri = "mongodb://127.0.0.1:27017" client = pymongo.MongoClient(uri) database = client['countries_db'] collection = database['currency'] exchange_doc = collection.find_one({}) currency_rates = {k: v for k, v in exchange_doc.items() if k != "_id"} # 批量计算所有汇率 updated_rates = {curr: rate * 2 for curr, rate in currency_rates.items()} print("所有汇率乘以2后的结果:") for curr, rate in updated_rates.items(): print(f"{curr}: {rate}")
小提示
- 如果你的集合里只有一个汇率文档,优先用
find_one()代替find(),不需要遍历游标更高效。 - 变量名尽量清晰,比如不要用
AED作为循环变量,改成doc或者item,避免和字段名混淆。 - 用
dict.get(key, default)的方式提取字段,可以避免字段不存在时抛出KeyError。
内容的提问来源于stack exchange,提问作者Filipe Santos
相关产品推荐
相关产品推荐

