2014-09-21 106 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