pymongo更新无法正常工作

时间:2012-01-30 10:27:09

标签: python mongodb pymongo

我尝试执行简单更新,但数据不会在数据库中更新。 在以下代码段中,我是:

  1. 创建新帐户并将其插入数据库(成功),
  2. 检索它(成功),
  3. 更新它(失败
  4. 这一切都在localhost,默认实例完成,不涉及副本。 我一步一步地遵循文档,然而,无法弄清楚我做错了什么。

    from pymongo import Connection
    from pymongo.objectid import ObjectId
    
    def _byid(id):
        return ObjectId(id)
    
    class Account(object):
        collection = Connection().testdb.accounts
    
        def insert(self, data):
            return self.collection.insert(data)
    
        def byid(self, id):
            return self.collection.find({"_id": _byid(id)})
    
        def update(self, id, data):
            return self.collection.update({"_id": _byid(id)}, {"$set":  data})
    
    acc_data = {
        "contact_name": "Mr. X",
        "company_name": "Awesome Inc.",
    }
    
    account = Account()
    
    # INSERT
    _id = account.insert(acc_data)
    print 'ID:', _id
    
    # RETRIVE
    for ac in account.byid(_id):    
        print ac["company_name"]
    
    # UPDATE
    acc_data["company_name"] = acc_data["company_name"][::-1].upper()
    print account.update(_id, acc_data)
    
    # RETRIVE AGAIN
    for ac in account.byid(_id):    
        print ac["company_name"]
    

1 个答案:

答案 0 :(得分:4)

知道了。 更新应该是:

def update(self, id, data):
    return self.collection.update({"_id": _byid(id)}, data)       

无需"$set"