使用Python

时间:2017-04-30 20:20:48

标签: mongodb python-3.x pymongo-3.x

我正在使用Flask和Mongo DB开发一个项目,我想显示一些嵌入式文档。我并没有真正收到错误消息,但数据没有显示我想要的方式。目前,我的文档看起来像这样:

{ "_id" : ObjectId("590639009103ad05fd8555dc"), 
 "comments" : [ { "comment" : 
 "Hello World" } ], 
 "age" : 23, 
 "name" : "Mike" }

现在,我想显示数据,显示个人所说的名称和评论。我想要这样的事情:迈克,以下说:'Hello World'

我的代码如下所示:

thoughts = person.show()
for thought in thoughts: 
     print(thought["name"], "says the following:", thought["comments"])

show()方法如下所示:

def show(self):
    thoughts = self.db.people.find()
    return thoughts

现在,在大多数情况下,几乎所有东西都是我想要的。当我运行我的代码时,我得到了这个: 迈克说:“''评论':'Hello World'}

我需要做的是深入挖掘嵌入式文档以显示:

迈克,以下说:'Hello World'

我尝试了以下内容:

for thought in thoughts: 
    print(thought["name"], "says the following:", 
    thought["comments.comment"])

它会收到以下错误消息:KeyError:'comments.comment'

然后我尝试了以下内容:

for thought in thoughts: 
    print(thought["name"], "says the following:", thought["comments"]
    ["comment"])

这给了我以下错误: TypeError:list indices必须是整数,而不是str

因此,我有点担心如何撤回每条评论。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

thought["comments"]是一个dicts列表。你想要列表中第一项的comment字段,因此:

print(thought["comments"][0]["comment"])