「Project」という名前のDBと「sample」という名前のコレクションがあり、mongoimport
コマンドを使用して1つのJSONファイルを挿入しました。
同じJSONファイルを編集しました。したがって、同じJSONファイルをコレクションにインポートする場合、複数のインスタンスが作成され、更新が行われないなどの問題に直面しています。
mongoimport
コマンドを使用してmongodbにすでに存在するデータを更新または上書きする方法はありますか?
--mode=upsert
フラグも使用してみたことに注意してください。
./mongoimport --db Project --collection sample --mode=upsert --file /home/rule.json
MongoDB v3.xの場合、
--mode=upsert
-dropフラグをmongoimportコマンドと一緒に使用して、既存のデータを上書き/更新することもできます。
--drop
./mongoimport --db Project --collection sample --drop --file /home/UCSC_rule.json
-upsertフラグを使用しようとしたが、既存のデータに変更が見られず、代わりに新しいインスタンスが作成されたため、このソリューションを提供しました。
デフォルトの動作では、すでに存在する場合はスキップするため、デフォルトでは既存のデータが上書きされません。
ただし、--upsert
フラグを使用して更新できます。
Mongo docに基づくと、この場合に--mode = upsertが機能しない理由は、デフォルトでは、mongoimportが_idフィールドを使用するためです。したがって、-dropが正解です。
--mode = upload:
デフォルトでは、mongoimportは_idフィールドを使用して、コレクション内のドキュメントをインポートファイル内のドキュメントと照合します。アップサートモードとマージモードの既存のドキュメントと照合するフィールドを指定するには、-upsertFieldsを使用します。
- 落とす:
入力からデータをインポートする前にターゲットインスタンスがコレクションを削除するように、インポートプロセスを変更します。