Я хотел бы сбросить данные базы данных Mongo в одном файле csv/excel. В моей базе данных есть несколько документов с одинаковыми полями и встроенными полями. Я хочу, чтобы каждое встроенное поле было одним столбцом моего файла csv, а каждый документ - одной строкой. Вот цель:Дамп базы данных Mongo в одном файле csv
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
Мой метод работает, но большой и я хотел бы больше полагаться на питона библиотек, таких как панд, openpyxl или CSV. Возможно, один из них может написать csv-файл из списка словарей после сглаживания каждого из них.
Спасибо за вашу помощь,
Матиас
Спасибо, это действительно намного проще. У меня есть два дополнительных вопроса: При попытке аутентификации с помощью mongoexport --authenticationMechanism SCRAM-SHA-1, я получаю сообщение об ошибке: '2017-01-13T09: 25: 27.625 + 0100 Утверждение пользователя: 2: SCRAM-SHA-1 поддержка механизма не компилируется в клиентскую библиотеку. «У меня есть mongoexport 2.6.10. Второй вопрос: в моей базе данных есть несколько полей, которые являются списками словарей, причем каждый словарь имеет те же два поля, x и y. Я хотел бы экспортировать эти данные, чтобы получить значения x в заголовках столбцов и значениях y в связанных ячейках для каждого документа. Еще раз спасибо – Matias
Поскольку Version 3.0 MongoDB больше не использует MONGODB-CR и вместо этого использует SCRAM-SHA-1 в качестве механизма аутентификации по умолчанию. Вы можете использовать '--authenticationMechanism MONGODB-CR' для более старых версий – MBushveld