Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印和计算MongoDB中Json内部的Python值_Python_Json_Mongodb - Fatal编程技术网

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

如何打印和计算MongoDB中Json内部的Python值,python,json,mongodb,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" clie

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

问题不在于它返回的是字符串值;它正在返回一个列表。当你尝试成倍增加一个列表时,它只会重复它自己很多次,这就是你在这里看到的。如何解决它取决于您希望从
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)


  • 我只需要导入一个元素,它不起作用,我想要对象中的元素,我必须在Mongo中导入对象吗?查看对我的响应的更改。您仍然需要删除包装调用的方括号,该调用正在创建一个列表(除了调用find(),该调用也返回一个列表)。