pymongo 更新无效

2 投票
1 回答
6199 浏览
提问于 2025-04-17 11:57

我尝试进行一个简单的更新,但数据库里的数据没有更新。以下是我的代码片段,我做了以下几件事:

  1. 创建了一个新账户并把它插入到数据库中(成功),
  2. 成功地取出了这个账户(成功),
  3. 尝试更新这个账户(失败

这一切都是在本地进行的,使用的是默认的实例,没有涉及到复制。虽然我一步一步按照文档操作,但还是搞不清楚我哪里出错了。

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 个回答

4

明白了。更新应该是:

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

不需要用到 "$set"

撰写回答