MongoDB ObjectID被添加到python中的类属性字典中

时间:2014-12-29 22:35:40

标签: python mongodb pymongo

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。

1 个答案:

答案 0 :(得分:1)

_id属性对于MongoDB中的记录是必需的 - 它作为记录的唯一标识符。 MongoDB将在插入新记录时自动创建。没有办法避免它包含在键中。但是,由于它保证在每个记录中,如果它真的让你烦恼,你可以安全地从列表中弹出它。