2014-12-29 85 views
0
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 

下面是如何稱呼它:MongoDB的對象ID被添加到類屬性字典,在python

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執行插入,財產被稱爲投資組合的變化,並有一個額外的密鑰添加。例如:print port.list_tickers()在插入過程之前和之後是不同的,我不明白爲什麼會這樣。在插入之前,我得到['CSCO', 'RSA', 'ARO'],插入後,我得到:['CSCO', 'RSA', '_id', 'ARO'],但我仍然應該閱讀相同的類屬性。額外的_id顯然是來自MongoDB的ID。

回答

1

對於MongoDB中的記錄,_id屬性是強制性的 - 它用作記錄的唯一標識符。插入新記錄後,MongoDB將自動創建它。沒有辦法避免將它包含在密鑰中。但是,由於它保證在每個記錄中,因此如果它真的讓你感到不適,你可以安全地從列表中彈出它。