Python pymongo更新不起作用

Python pymongo更新不起作用,python,mongodb,pymongo,Python,Mongodb,Pymongo,我尝试执行一个简单的更新,但数据库中的数据没有更新。 在以下代码段中,我是: 创建新帐户并将其插入数据库(success) 检索它(成功) 更新它(失败) 这一切都是在本地主机上完成的,默认实例,不涉及副本。 我一步一步地遵循文档,但是,我不知道我做错了什么 from pymongo import Connection from pymongo.objectid import ObjectId def _byid(id): return ObjectId(id) class Acco

我尝试执行一个简单的更新,但数据库中的数据没有更新。 在以下代码段中,我是:

  • 创建新帐户并将其插入数据库(success
  • 检索它(成功
  • 更新它(失败
  • 这一切都是在本地主机上完成的,默认实例,不涉及副本。 我一步一步地遵循文档,但是,我不知道我做错了什么

    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"]
    
    明白了。 更新内容应为:

    def update(self, id, data):
        return self.collection.update({"_id": _byid(id)}, data)       
    
    不需要
    “$set”

    明白了。 更新内容应为:

    def update(self, id, data):
        return self.collection.update({"_id": _byid(id)}, data)       
    
    不需要
    “$set”