如何在MongoDB中的Json内部打印和计算Python中的值

时间:2018-03-28 11:16:50

标签: python json mongodb

我在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并计算它? 感谢。

1 个答案:

答案 0 :(得分:2)

问题不在于它返回一个字符串值;它正在返回一个列表。当你试图乘以一个列表时,它只会复制多次,这就是你在这里看到的。你如何解决它取决于你期望从find()操作中获得多少元素,以及你想要用它们做什么。

  1. 如果您期望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
    
  2. 如果您期望的元素数超过1个,则可以使用res = map(lambda x: x*2, currency)

  3. 在其上运行地图,将每个返回值乘以2。