하나의 csv/excel 파일에 Mongo 데이터베이스의 데이터를 덤프하고 싶습니다. 데이터베이스에 동일한 필드와 포함 된 필드가있는 여러 문서가 있습니다. 각 임베디드 필드를 내 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()의 projection 인수를 사용하여 csv 열에 입력 할 필드를 선택합니다.
- print_cursor_to_csv()에서 projection 인수가 다시 사용됩니다. 이번에는 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
내 방법을 작동하지만 크고, 나는 그런 판다, openpyxl 또는 CSV로 파이썬 라이브러리에 더 의존하고 싶습니다. 아마도 그들 중 하나가 사전을 목록 화 한 후 각 파일을 병합 한 후 csv 파일을 작성할 수 있습니다.
당신은이 작업을 수행 할 mongoexport을 사용할 수 있습니다마티아스
감사합니다. 실제로 훨씬 쉽습니다. mongoexport --authenticationMechanism SCRAM-SHA-1로 인증을 시도하는 중에 '2017-01-13T09 : 25 : 27.625 + 0100 사용자 어설 션 : 2 : SCRAM-SHA-1'오류가 발생합니다. 메커니즘 지원은 클라이언트 라이브러리에 컴파일되지 않았습니다.'mongoexport 2.6.10이 있습니다. 두 번째 질문 : 데이터베이스에서 사전의 목록 인 일부 필드가 있고, 각 사전에는 동일한 두 필드 x와 y가 있습니다. 각 셀의 관련 셀에서 열 머리글과 y 값에 x 값을 가져 오기 위해 이러한 데이터를 내보내 려합니다. 다시 한 번 감사드립니다 – Matias
버전 3.0 이후로 MongoDB는 더 이상 MONGODB-CR로 기본 설정되지 않고 SCAM-SHA-1을 기본 인증 메커니즘으로 사용합니다. 이전 버전에서는'--authenticationMechanism MONGODB-CR'을 사용할 수 있습니다. – MBushveld