我想更新馆藏书中的记录。我想创建一个新字段,其名称和值是变量中的值。
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()
中得到什么。由于我看不到该代码,也看不到数据库中的数据,因此如果没有更多信息,我不确定如何进一步提供帮助。