2017-04-10 5 views
1

は、次のようになり構造を有する:ここではPymongoを使用してドキュメントをオブジェクトに挿入する方法は?私はコレクションの魔女を操作するためPymongoを使用してい

{ 
    Client1:{ 
     "_id" : "Client1" 
     Project1:{ 
      Software1:{ 
       language : "Python", 
       complexity : "Low" 
      } 
      Software2:{ 
       language : "C#", 
       complexity : "Low" 
      } 
      Software3:{ 
       language : "Java", 
       complexity : "Hard" 
      } 
     } 
    } 
} 

、私は文書Client1新しいSoftwareの挿入を更新するために多くの方法をしようと試みたが、私は可能性これを行う方法や機能を見つけることはできません。

私の質問は:この範囲では、既存のアイテムを除外せずに新しいSoftwareをどうやって挿入できますか?

は、ここで私がしようとしていたが、働いていなかったものです:私が得た

client = "Client1" 
client = collection.find_one({"_id": client}) 

project = "Project1" 

software = str(raw_input("Enter with the software to be added to project: ")) 

language = str(raw_input("Enter with the software language: ")) 

complexity = str(raw_input("Enter with the software complexity: ")) 

collection.update({"_id" : client["_id"], }, {"$set" : { 
                  client[project] : {software : {"language": language, "complexity" : complexity}} 
                 } 
               }) 

エラーだった:client[project] : {software : {"language": language, "complexity" : complexity}}

今以来、おかげであなたの注意のために含まれている行でunhashable type: 'dict'

答えて

0

あなたは変数を使用して、辞書を作成してキーを作成しようとしています。この場合、client[project]はdictであり、これを別のdictのキーとして使用しています。私はあなたの鍵がprojectであることを望むと思う。

project : {software : {"language": language, "complexity" : complexity}} 
+0

It Works!ありがとう、私の次の問題は 'Software'属性を更新することです、私は方法を見つけようとします。 –

+0

すばらしい、聞いてうれしい! – Alex

関連する問題