【问题标题】:TypeError: unhashable type: 'dict' when update array in MongoDBTypeError: unhashable type: 'dict' 在 MongoDB 中更新数组时
【发布时间】:2018-06-19 15:35:01
【问题描述】:

我正在尝试编写 RESTful API 网络服务。使用 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
        }
    }
})

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

我使用 Python 和 PyMongo 连接数据库

感谢您的帮助!

【问题讨论】:

    标签: python mongodb pymongo typeerror


    【解决方案1】:

    尝试删除第一个花括号:

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

    update_one 前两个参数是filterupdate,它们是两个字典。在您的示例中,您添加了一些额外的花括号,这会导致 Python 实际上构建 set,因为设置了速记语法:

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

    【讨论】:

    • 非常感谢。它正在工作。这是我在我建议的参考链接中不明白的一点。你的答案我很清楚。
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多