TypeError:不可用类型:' dict'在MongoDB中更新数组时

时间:2018-06-19 07:25:13

标签: python mongodb pymongo typeerror

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

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

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

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

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

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

我使用Python和PyMongo连接数据库

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试删除第一个花括号:

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