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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:49