Как использовать динамическую переменную в скрипте python mongodb

Я хочу обновить записи в книгах коллекции.
Я хочу создать новое поле, Имя и значение которого являются значениями переменных.

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

Когда я сделал это, я получил ошибку: WriteError: путь обновления содержит пустое имя поля. Это не разрешено, что не верно, потому что обе переменные имеют значения. Я погуглил и решил эту проблему, заключив автора в []. Код выглядит следующим образом:

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

Но теперь я получаю эту ошибку, которую я не в состоянии решить:
TypeError: unhashable тип: ‘list’

Кто-нибудь сталкивался с такой проблемой? Как я могу это решить?

1 ответ

  1. Это звучит так, как будто getAuthor()не возвращает ничего для своего первого значения, поэтому authorустанавливается в ничто. Из того, что я могу видеть, вы не решили ошибку, вы просто изменили его на другую ошибку. Заставляя его говорить [author](хотя прошло некоторое время с тех пор, как я был в Python), я считаю, что вы просто пытаетесь установить ключ, чтобы быть пустым списком или списком с пустой строкой в качестве единственного значения, в зависимости от того, что authorесть.

    На вашем месте я бы распечатал то, что authorесть, или сделал бы отладку и выяснил, что вы получаете обратно getAuthor(). Поскольку я не могу видеть этот код или данные в вашей базе данных, я не уверен, как помочь дальше без дополнительной информации.