如何在python mongodb脚本中使用动态变量



我想更新馆藏书中的记录。我想创建一个新字段,其名称和值是变量中的值。

for book in db.books.find():
    title = book['title']
    author, value = getAuthor(title)
    db.dataset.update({"_id": book['_id']}, {"$set": {author: value}})

当我这样做时,我收到错误:写入错误:更新路径包含一个空字段名称。这是不允许的,因为两个变量都有值。我用谷歌搜索并通过将作者包含在 [] 中来解决此问题。所以代码看起来像这样:

for book in db.books.find():
    title = book['title']
    author, value = getAuthor(title)
    db.dataset.update({"_id": book['_id']}, {"$set": {[author]: value}})

但是现在我收到此错误,我无法解决:类型错误:不可哈希类型:"列表"

有人遇到过这样的问题吗?我该如何解决?

听起来getAuthor()没有返回它的第一个值,所以author被设置为零。据我所知,您没有解决错误,只是将其更改为其他错误。通过让它说[author](尽管我已经有一段时间没有使用Python了),我相信你只是试图将键设置为空列表,或者将空字符串作为唯一值的列表,具体取决于author是什么。

如果我是你,我会打印出author是什么,或者做一些调试并弄清楚你从getAuthor()中得到什么。由于我看不到该代码,也看不到数据库中的数据,因此如果没有更多信息,我不确定如何进一步提供帮助。

最新更新