2014-09-21 72 views
2

使用python 2.7,pymongo,mongoDB 2.6.1:从mongoDB文档中获取JSON

我有一个mongoDB集合。

现在我试图从它的几个字段,并将它的JSON列表到一个文件(这是另一方期望的输入)。

我尝试下面的代码:

my_file = open("test.csv", "w") 
for doc in collection.find(): 
    json.dumps({"command": doc["command"], "data": doc["data"]}, my_file) 

,并得到了错误: KeyError异常: '命令'

缺少什么我在这里?

+0

并集合中的所有文档都'command'?尝试使用'doc.get('command')' – 2014-09-21 11:18:54

回答

0

这意味着至少有一条记录没有command字段。检查记录有command字段。

除此之外,json.dumps只接受一个位置参数,不像json.dump,它需要一个对象和一个文件对象。

如果您将记录转储到一个文件中,则很难将其解码回来。你最好转储一个包含记录的列表对象。

with open("test.json", "w") as f: 
    json.dump(list(collection.find()), f) 

找回记录:

with open("test.json") as f: 
    records = json.load(f) 
+0

我没有在所有记录上的“命令”字段。无论如何,我尝试过(选择所选字段),并在其中获得了一个带有“[]”的文件。就这样。 – mudahan 2014-09-22 04:18:44

+0

@mudahan,如果你打印它('print(list(collection.find()))'),你看到了什么? – falsetru 2014-09-22 04:35:39

+0

我看到里面的所有数据。那么,当我把它放在一个文件中时,它怎么不起作用呢? – mudahan 2014-09-22 04:44:17