我有一组存储在mongodb中的财务数据。每个公司的符号都有其数据。问题是如何迭代集合并更改密钥的值,这是符号公司打印出整个集合,这是我的公司列表[' TSLA',' TYO&# 39;,' C'' LULU'' DTV'' SHS',' ZNGA']这是我的鳕鱼,它返回一家公司的数据:
from pymongo import MongoClient
import csv
host = "localhost"
port = 27017
databaseName = "finance000"
collection_name = "income"
client = MongoClient(host, port)
database = client[databaseName]
collection = database[collection_name]
def finance_data(symbol):
Earnings_BeforeInterestAndTaxes = symbol['statement'[0]EarningsBeforeInterestAndTaxes']['content']
Total_Revenue = symbol['statement'][0]['TotalRevenue']['content']
return Earnings_BeforeInterestAndTaxes,Total_Revenue
i =collection.find({'symbol':'C'})
with open('D:/INCOMEdata.csv', "w") as output:
writer = csv.writer(output, lineterminator='\n')
for key in i :
print finance_data(key)
writer.writerow(finance_data(key))
答案 0 :(得分:0)
如果我理解正确的话。您想要检索给定公司的文档/数据。该公司用符号示例表示' TYSLA'
如果那就是你需要的。以下是您的操作方法(假设每个符号都是唯一的)
company_data = collection.find({'symbol':'TYSLA'})
以上将返回字典。要访问文档中的元素,只需使用:
company_data['profit'] #profit is an example of an attribute name. You can use any attribute you like.
假设您有多个公司使用相同的符号。如果您使用上面的命令。你会得到一个光标。让每个公司只做一个for循环的例子:
company_data = collection.find({'symbol':'TYSLA'})
现在循环:
for one in company_date:
print one['profit'] #python 2.7
现在编辑说法,例如利润属性使用 $ set
collection.update_one({'symbol':'TYSLA'},{'profit':100})
以上将使TYSLA的公司利润变为100
<强>更新强>
假设您的集合中的符号为[&#39; TSLA&#39;,&#39; TYO&#39;,&#39; C&#39;,&#39; LULU&#39 ;,&#39; DTV&#39;&#39; SHS&#39;,&#39; ZNGA&#39]。获取您使用的任何符号的数据(假设符号包含任何名称(只有一个名称)):
您使用 $或作为:
collection.find({"$or":[ {'symbol':'TSLA},{'symbol':'TYO},... ]},{}) #the ... are the rest of the names you need
以上内容返回给定符号的整个数据。要返回细节Total_Revenue和Earnings_BeforeInterestAndTaxes,请使用以下内容:
collection.find({"$or":[ {'symbol':'TSLA},{'symbol':'TYO},... ]},{'Total_Revenue ':1,'Earnings_BeforeInterestAndTaxes ':1, _id:0 }) #if you remove _id it will always be returned
我希望有所帮助。