2017-05-16 18 views
0

私はmongoddb DBを 'CRM'とし、コレクションには "users"というコレクションがあります。mongodbコレクションの各ドキュメントを別々のjsonファイルにエクスポートします

「ユーザー」コレクションには50,000人以上のユーザーがいます。

"users"コレクションのすべてのユーザー文書を.jsonファイルにエクスポートしたいとします。

私はすべてのユーザーにjsonオブジェクトの配列として1つの(users.json)jsonファイルを与えるコマンドを実行しました。

mongoexport -d CRM -c users -o users.json --jsonArray 

ただし、ユーザーごとに.JSONファイルが必要です。

ご協力いただければ幸いです。

+0

MongoDBでこれを行う方法はありません。おそらく、配列のすべてのドキュメントを読み込んでファイルを作成するスクリプトを書くべきでしょう。 – bappr

+0

50000以上の文書を配列に読み込んだ後、1​​つずつファイルに書き込むことはできますか? – user54858

+0

はい、そうです。 mongoexportはあなたの50K文書のエクスポートを行います、そして、あなたのスクリプトはあなたのファイルを読むでしょう。 私の意見では、コレクションを読み込んで各文書のファイルを作成するスクリプトを作成する方が良いと思っています。それを拡大してより効果的になるでしょう – bappr

答えて

0

jqこれを手助けしました。

Mongoの出力ファイルは有効なJSONファイルではなく、それぞれ有効なJSONコンテンツの個々の行です。私が使用した手順は以下のとおりであった:各行を反復

  • IDを取得するために、それを解析
  • 書き込みファイル名としてIDを使用します(ここでは、独自のフィールドを使用することができます)ファイルへの行/文書

ここで私が最終的に使用bashのコードです:

# Make newlines the only separator. 
IFS=$'\n' 
# Disable globbing. 
set -f   

# Iterate through the export file 
for doc in $(cat < export.txt); do 
    # $doc is a valid JSON document. Parse it to get the filename 
    # based on the ID. 
    export filename=`echo $doc | jq -r '._id'`.json 

    # Write document to file. 
    echo "Writing $filename" 
    echo $doc > $filename 
done 
は、

は、私はこれらのスタック交換の回答からこれを学んだ:

私は、これは50、000レコードのために働くだろうどれだけだけではわかりません。

関連する問題