本番環境のバックアップでは、MongoDBはデータの正確性のために mongoexport ではなく mongodump を推奨します。ただし、バックアップする前に、MongoDBデータベースからデータを「スクラブ」する必要があります。 mongoexport以外のサーバー側のデータスクラブオプションは知りません。 2つの質問:
最初の質問への回答として、両方のツール(デフォルト)は_id
インデックスを使用してデータをフェッチし、ディスクに書き込みます。したがって、はい、どちらのツールも同様にワーキングセットに影響を与えます。そのため、通常はセカンダリ(できれば非表示のセカンダリ)に対して実行することをお勧めします。私はここのコメントでStennieをエコーし、大量のデータを扱う場合は他のバックアップ方法をお勧めします。
2番目の質問について、私はあなたがmongodump
に相当する --fields
特定のフィールドのみをダンプするmongoexport
のオプション。 クエリオプション は結果のフィルタリングに使用できますが、プロジェクションでは使用できません(返されるフィールドを選択するため)-これは TOOLS-28で追跡されている機能リクエストです ですが、まだスケジュールされていません。 Stennieも述べたように、ここでのもう1つのオプションは、ニーズに合ったカスタムエクスポーターを作成することです(ここでも、ワーキングセットを保護するためにセカンダリに対して実行することをお勧めします)。
(ごめん、知らない)
-queryは、フィールドではなく、ドキュメント全体を選択または除外します。
しかしそれは良い考えでしょう:
--query '{datetime:{$gt:ISODate("2014-01-01T00:00:00.000Z")}},{_id:0,name:1,address:1,interests:1}'* )
Mongoexportは実際には型を保持しますが、データを不整合にします。 IntsとLongsを使用してフィールドをエクスポートする場合は、フィールドをそれぞれNumbersおよびJSONオブジェクトとしてエクスポートするため、将来はさらに難しくなる可能性があります。
「厳密モード。BSONタイプの厳密モード表現は、JSON RFCに準拠しています。どのJSONパーサーも、これらの厳密モード表現をキー/値のペアとして解析できます。ただし、MongoDBの内部JSONパーサーだけが、フォーマットによって伝えられるタイプ情報を認識します。」
https://docs.mongodb.com/manual/reference/mongodb-extended-json/