我想將一個Mongo數據庫的數據轉儲到一個csv/excel文件中。 我的數據庫有幾個文檔具有相同的字段和嵌入的字段。我希望每個嵌入字段都是我的csv文件的一列,每個文檔都只有一行。 這裏是我們的目標:在一個csv文件中轉儲Mongo數據庫
a_cursor = a_collection.find(filter, projection) # pymongo.collection.find() method
a_csv_file = print_cursor_to_csv(a_cursor,projection) # the method I would like to create
- 隨着發現的過濾器參數(),我將能夠過濾蒙戈文件。
- 通過find()的投影參數,我將選擇要放入csv列的字段。
- 投影參數在print_cursor_to_csv()中再次使用,這次只是爲了給出csv文件的字段/列的順序。事實上,投影是一個字段列表,第一個字段將是第一個csv列。
這裏是我寫的方法:
def _print_cursor_in_csv(cursor, fields_to_show_order):
"""
:param cursor: pymongo.Cursor. The list of documents to print into csv.
:param fields_to_show_order: List of String. Permits to know the order of columns chosen by the user.
Example : BaseStation_ID as first columns, then frequency of utilisation etc..
"""
flattened_cursor = []
for a_document in cursor:
flattened_cursor.append(_flatten_the_dict(a_document))
string_csv = _get_string_csv_from_list_of_dicts(flattened_cursor, fields_to_show_order)
_write_a_file_from_a_string("testCSV"+".csv", string_csv) # PRINT CSV OF A DOC
我的方法的作品,但大,我想更多地依靠Python庫如大熊貓,openpyxl或CSV。也許他們中的一個可以在平鋪每個字典之後從字典列表中編寫一個csv文件。
感謝你的幫助,
馬蒂亞斯
謝謝,這確實容易得多。我有兩個額外的問題: 在嘗試使用mongoexport - 認證機制SCRAM-SHA-1進行認證時,出現錯誤:'2017-01-13T09:25:27.625 + 0100 User Assertion:2:SCRAM-SHA-1機制支持沒有編譯到客戶端庫中。「我有mongoexport 2.6.10。第二個問題:在我的數據庫中,我有一些字典是字典列表,每個字典都有相同的兩個字段x和y。我想導出這些數據,以便在每個文檔的相關單元格的列標題和y值中獲得x值。再次感謝 – Matias
從版本3.0開始,MongoDB不再默認爲MONGODB-CR,而是使用SCRAM-SHA-1作爲默認身份驗證機制。對於舊版本,您可以使用' - 驗證機制MONGODB-CR' – MBushveld