2017-04-10 87 views
1

我使用Pymongo操纵集合女巫,看起来像下面这样的结构:如何使用Pymongo在文档中插入对象?

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

在这种情况下,我tryed的许多方法来更新插入一个新的Software文档Client1,但我可以没有找到一种方法或功能来做到这一点。

所以我的问题是:在这个范围内,我怎样才能插入一个新的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]是一个字典,你正在使用它作为另一个字典中的关键字。我想你只是想让你的钥匙成为project

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

It Works!非常感谢,现在我的下一个问题是更新'Software'属性,我会尽力找到一种方法。 –

+0

太棒了,很高兴听到! – Alex

相关问题