これはかなり古い質問であり、インデックスを含めて100%忠実な結果が必要な場合は、mongodump / mongorestoreが明らかに正しい方法であることを理解しています。
しかし、特に奇妙なことが起こっていない限り、MongoDBの古いバージョンと新しいバージョンの間で前方互換性と後方互換性がある可能性が高い、迅速でダーティなソリューションが必要でした。そしてそのために私は元の質問への答えを求めていました。
上記の他の許容可能な解決策がありますが、このUnixパイプラインは比較的短くて便利です。
mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json
これにより、.json
コレクションごとに適切な名前のファイルが作成されます。
データベース名( "mydatabase")が2回表示されることに注意してください。私はデータベースがローカルであり、資格情報を渡す必要がないと想定していますが、との両方mongo
でそれを行うのは簡単mongoexport
です。
古いバージョンのMongoDBが新しいシステムコレクションからシステムコレクションを解釈しようとするのを望まないため、私はgrep -v
discard を使用していることに注意しsystem.indexes
てください。代わりに、アプリケーションが通常のensureIndex
呼び出しを行ってインデックスを再作成することを許可しています。