从MongoDB文档中获取JSON格式数据

3

使用Python 2.7、pymongo和MongoDB 2.6.1:

我有一个MongoDB集合。

现在,我正在尝试从中取出几个字段,并将其制作成JSON列表,写入文件(这是另一方期望的输入)。

我尝试了以下代码:

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

我遇到了以下错误:

KeyError: 'command'

这是哪里出了问题?

请帮忙排查一下。


集合中的所有文档都有“command”吗?尝试使用doc.get('command') - salmanwahed
1个回答

1
这意味着至少有一条记录没有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)

我并没有在所有记录中都有“command”字段。无论如何,我尝试了这个(选择所选字段),并得到了一个带有“[]”的文件。就是这样。 - mudahan
@mudahan,如果你打印它(print(list(collection.find()))),你看到了什么? - falsetru
我能看到数据全部在里面。那么为什么当我把它放入文件中时它不起作用呢? - mudahan
@mudahan,试试这个:f.write(json.dumps(list(collection.find())))。如果不行,请告诉我这个输出的结果是什么:print(json.dumps(list(collection.find()))) - falsetru
f.write() 的输出与以前相同:[],print 也是如此。 - mudahan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接