コレクションの書籍を更新したいと思います。 名前と値が変数の値である新しいフィールドを作成したいと思います。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:更新パスに空のフィールド名が含まれています。両方の変数に値があるため、どちらが真でないかは許可されていません。私はgoogledと[]に著者を囲むことでこの問題を解決した。だから、コードは次のようになります。
for book in db.books.find():
title = book['title']
author, value = getAuthor(title)
db.dataset.update({"_id": book['_id']}, {"$set": {[author]: value}})
しかし、今、私は私が解決することはできませんよ、このエラーを取得しています: はTypeError:非ハッシュの種類:「リスト」
は、誰もがこのような問題が発生したのか?どうすれば解決できますか?
答えに感謝しますが、質問に記載されているように、両方の変数に価値があります。 getAuthor()は常に値を返します。常に空でない文字列を返します。 – mark
はい、しかし、あなたはあなたがそれを知っているか、またはあなたがそれを前提としているかどうかを説明していません。多くの場合、私の奇妙な誤りは私の仮定の一つが間違っている時です。いずれにしても、最初の問題は '[author]'がリストリテラルなので、キーをリストにして文字列ではないので解決しなければならないと思います。 –
私はそれをdebbugedと私はそれが空ではない見たので、すべての値を印刷します。どのように私は最初の問題を解決することができますか?それを[]に封じ込める以外の方法がありますか? – mark