首页 > 解决方案 > TypeError: unhashable type: 'dict' 在 MongoDB 中更新数组时

问题描述

我正在尝试编写 RESTful API Web 服务。使用 MongoDB,我收集了这样的用户:

{
    userId
    name
    passwd
    listMovie: [
        {
            videoId
            watchedTime
            status
        }
    ]
}

我创建了一个 API url 来将新的电影项目添加到listMovie数组中。示例代码:

movie = {
    'videoId': 3,
    'watchedTime': 155000,
    'status': False
}

self.userCollection.update_one({
    {'userId': user_id},
    {
        '$push': {
            'listMovie': movie
        }
    }
})

TypeError: unhashable type: 'dict'但是这段代码在 line引发了一个错误'listMovie: movie'。根据此链接pymongo api type-error,我知道该dict类型不可散列。那么我怎样才能达到我的目的呢?

我使用 Python 和 PyMongo 连接到数据库

谢谢你的帮助!

标签: pythonmongodbpymongotypeerror

解决方案


尝试删除第一个花括号:

self.userCollection.update_one(
    {'userId': user_id},
    {'$push': {'listMovie': movie}},
)

update_one前两个参数是filterupdate是两个字典。在您的示例中,您添加了一些额外的花括号,由于 set 速记语法,这导致 Python 实际构建了一个集合:

my_set = {1, 2}  # set with elements 1 et 2

推荐阅读