1つのcsv/excelファイルにMongoデータベースのデータをダンプしたいと思います。 私のデータベースには、同じフィールドと埋め込みフィールドを持つ複数のドキュメントがあります。各埋め込みフィールドを私のcsvファイルの1つの列にし、各ドキュメントを1行にします。 がここでの目的である:検索のフィルタ引数で1つの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()では投影引数が再度使用されます。今回は、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などのpythonライブラリの詳細を頼るしたいと思います。たぶんそれらのうちの1人は、それらの各々を平坦化した後に、辞書のリストからCSVファイルを書くことができる。
は
マティアス
ありがとう、本当にはるかに簡単です。 mongoexport --authenticationMechanism SCRAM-SHA-1で認証しようとすると、次のエラーが表示されます。 '2017-01-13T09:25:27.625 + 0100ユーザアサーション:2:SCRAM-SHA-1メカニズムのサポートはクライアントライブラリにコンパイルされていません.'私はmongoexport 2.6.10を持っています。 2番目の質問:私のデータベースには辞書のリストであるいくつかのフィールドがあり、各辞書には同じ2つのフィールドxとyがあります。これらのデータをエクスポートして、各ドキュメントの関連するセルの列ヘッダーとy値のx値を取得したいと考えています。ありがとうございました – Matias
バージョン3.0以降、MongoDBはデフォルトでMONGODB-CRにデフォルトではなく、代わりにSCRAM-SHA-1をデフォルトの認証メカニズムとして使用します。古いバージョンでは '--authenticationMechanism MONGODB-CR'を使うことができます – MBushveld