我在mongodb里面有这个Json
{
"_id" : ObjectId("5aba203f00435837802f9c49"),
"AED" : 4.572098,
"AFN" : 86.093419,
"ALL" : 130.478529,
"AMD" : 597.524404,
"ANG" : 2.216574,
"AOA" : 264.413246,
}
这在Python中
import pymongo
uri = "mongodb://127.0.0.1:27017"
client= pymongo.MongoClient(uri)
database = client['countries_db']
collection = database['currency']
currency =[AED['AED'] for AED in collection.find({})]
res=currency*2
print(res)
输出: [4.572098,4.572098]
当我打印它时,它作为一个字符串值,它重复两次AED。 有没有办法将值调用为float并计算它? 感谢。
答案 0 :(得分:2)
问题不在于它返回一个字符串值;它正在返回一个列表。当你试图乘以一个列表时,它只会复制多次,这就是你在这里看到的。你如何解决它取决于你期望从find()
操作中获得多少元素,以及你想要用它们做什么。
如果您期望find()
操作产生1个元素,则应将其转换为find_one()
,这将返回一个浮点数,使您的乘法运算按预期工作使用以下代码:
item = collection.find_one({}) # Returns a single doc. Note the lack of square brackets
currency = item['AED'] # Get the desired key of the document
res = currency * 2
如果您期望的元素数超过1个,则可以使用res = map(lambda x: x*2, currency)