我正在为我的软件编写一个API,以便更容易访问mongodb.

我有这样一句话:

def update(self, recid):        
    self.collection.find_and_modify(query={"recid":recid}, update={{ "$set": {"creation_date":str( datetime.now() ) }}} )

TypeError: Unhashable type: 'dict'分.

这个函数只是用来查找recid与参数匹配的文档,并更新其creation_date字段.

为什么会发生这种错误?

推荐答案

很简单,如果您添加了额外/多余的花括号,请try 以下方法:

self.collection.find_and_modify(query={"recid":recid}, 
                                update={"$set": {"creation_date": str(datetime.now())}})

UPD (explanation, assuming you are on python>=2.7):

出现此错误是因为python认为您正在try 使用{}表示法创建一个集合:

集合类是使用字典实现的.因此

换句话说,集合的元素应该是可散列的:例如intstring.您将dict传递给它,它是不可散列的,不能是集合的元素.

另外,请参见以下示例:

>>> {{}}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

希望有帮助.

Mongodb相关问答推荐

如何让mongoDB根据用户集合中提供的_id为发送者和接收者填充事务集合的子字段

MongoDB索引使用

Golang mongodb聚合错误:管道阶段规范对象必须包含一个字段

如何在MongoDB中搜索有序子集的方法?

Kotlin 使用初级构造实例化公开类

尽管前一阶段输出文档,$group stage 仍返回零文档

根据条件删除一些数组元素并将数组的大小更新为mongo中的另一个文件

MongoDB 支持的最 Big Data 库数

连接到远程 mongo 服务器导致异常连接失败

如何在 Mongo 聚合管道中获取限制之前的计数

oplog 在独立 mongod 上启用,不适用于副本集

带有 mongodb 和 nodejs 的实时 Web 应用程序

在 MongoDb 中查询小于 NOW 的日期时间值

什么是 mongodb 中的admin数据库?

如何将 mongoDB 数据导出为 CSV 格式?

嵌套数组内的Mongodb增量值

MEAN 堆栈文件上传

MongoDB 嵌套 OR/AND 在哪里?

Mongodb:为什么 show dbs 不显示我的数据库?

为什么我新创建的 mongodb 本地数据库增长到 24GB?