Ich möchte die Daten einer Mongo-Datenbank in einer csv/Excel-Datei ausgeben. Meine Datenbank enthält mehrere Dokumente mit den gleichen Feldern und eingebetteten Feldern. Ich möchte, dass jedes eingebettete Feld eine Spalte meiner CSV-Datei und jedes Dokument eine Zeile enthält. Hier ist das Ziel:Dump einer Mongo-Datenbank in einer CSV-Datei
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
- Mit dem Filter Argumente von find(), ich in der Lage sein, die Mongo Dokumente zu filtern.
- Mit dem Projektionsargument von find(), wähle ich die Felder aus, die in CSV-Spalten eingefügt werden sollen.
- Das Projektionsargument wird erneut in print_cursor_to_csv() verwendet, diesmal nur um die Reihenfolge der Felder/Spalten für die CSV-Datei anzugeben. Tatsächlich ist die Projektion eine Liste von Feldern und das erste Feld ist die erste CSV-Spalte. Hier
ist die Methode, die ich schrieb:
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
Meine Methode funktioniert, aber ist groß, und ich möchte mehr über Python Bibliotheken angewiesen wie Pandas, openpyxl oder csv. Vielleicht kann einer von ihnen eine csv-Datei aus einer Liste von Wörterbüchern nach dem Abflachen jedes einzelnen von ihnen schreiben.
Vielen Dank für Ihre Hilfe,
Matias
Vielen Dank, es ist in der Tat viel einfacher. Ich habe zwei zusätzliche Fragen: Beim Versuch, mit mongoexport --authenticationMechanism SCRAM-SHA-1 zu authentifizieren, bekomme ich den Fehler: '2017-01-13T09: 25: 27.625 + 0100 User Assertion: 2: SCRAM-SHA-1 Mechanismus Unterstützung nicht in Client-Bibliothek kompiliert. Ich habe mongoexport 2.6.10. Zweite Frage: In meiner Datenbank habe ich einige Felder, die Listen von Wörterbüchern sind, jedes Wörterbuch hat die gleichen zwei Felder, x und y. Ich möchte diese Daten exportieren, um X-Werte in den Spaltenheadern und Y-Werten in den verwandten Zellen für jedes Dokument zu erhalten. Nochmals vielen Dank – Matias
Seit Version 3.0 MongoDB nicht mehr standardmäßig auf MONGODB-CR und stattdessen SCRAM-SHA-1 als Standard-Authentifizierungsmechanismus. Sie können '- authenticationMechanism MONGODB-CR' für ältere Versionen verwenden – MBushveld