【问题标题】:Getting a JSON out of a mongoDB document从 mongoDB 文档中获取 JSON
【发布时间】:2014-11-15 12:08:29
【问题描述】:

使用 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?尝试使用doc.get('command')

标签: python json mongodb pymongo


【解决方案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)

【讨论】:

  • 我在所有记录中都没有“命令”字段。无论如何,我尝试了这个(选择选定的字段),并得到一个包含“[]”的文件。就是这样。
  • @mudahan,如果你打印它(print(list(collection.find()))),你看到了什么?
  • 我看到里面的所有数据。那么为什么我把它放在一个文件中它不起作用呢?
  • @mudahan,试试这个:f.write(json.dumps(list(collection.find())))。如果这不起作用,请告诉我打印的内容:print(json.dumps(list(collection.find())))
  • f.write() 具有与之前相同的输出: [] ,打印也是如此。
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 2016-02-01
  • 2016-05-25
  • 2021-12-16
  • 2019-10-10
  • 1970-01-01
相关资源
最近更新 更多