class Portfolio:
def read(self, pathfilename):
.... stuff ....
self.portfolio[comp_symbol] = {'name': comp_name , 'holdings': comp_holdings}
def save_portfolio(self, port_collection):
port_collection.insert(self.portfolio)
def list_tickers(self):
return (self.portfolio.keys())
def __init__(self):
self.portfolio = {}
self.id = None
以下是如何调用它:
port = Portfolio()
print "==================================================================================="
print port.id
print port.portfolio
print "==================================================================================="
port.read(portfolio_file)
print port.id
print port.portfolio
print port.portfolio.keys()
print "==================================================================================="
print port.list_tickers()
port.save_portfolio(port_collection)
print port.list_tickers()
print port.portfolio
问题是在使用pymongo执行插入时,名为portfolio的属性发生了更改,并且添加了一个额外的键。例如:print port.list_tickers()
在插入过程之前和之后是不同的,我不明白为什么会出现这种情况。在插入之前,我得到['CSCO', 'RSA', 'ARO']
,在插入之后,我得到:['CSCO', 'RSA', '_id', 'ARO']
,但我仍然应该从同一个类属性中读取。额外的_id
显然是来自MongoDB的id。
答案 0 :(得分:1)
_id属性对于MongoDB中的记录是必需的 - 它作为记录的唯一标识符。 MongoDB将在插入新记录时自动创建。没有办法避免它包含在键中。但是,由于它保证在每个记录中,如果它真的让你烦恼,你可以安全地从列表中弹出它。