web-dev-qa-db-ja.com

Mongoimport jsonファイルの更新または上書き..?

「Project」という名前のDBと「sample」という名前のコレクションがあり、mongoimportコマンドを使用して1つのJSONファイルを挿入しました。

同じJSONファイルを編集しました。したがって、同じJSONファイルをコレクションにインポートする場合、複数のインスタンスが作成され、更新が行われないなどの問題に直面しています。

mongoimportコマンドを使用してmongodbにすでに存在するデータを更新または上書きする方法はありますか?

--mode=upsertフラグも使用してみたことに注意してください。

./mongoimport --db Project --collection sample --mode=upsert --file   /home/rule.json
14
Mercer

MongoDB v3.xの場合、

--mode=upsert
20
lanenok

-dropフラグをmongoimportコマンドと一緒に使用して、既存のデータを上書き/更新することもできます。

--drop


./mongoimport --db Project --collection sample --drop --file   /home/UCSC_rule.json

-upsertフラグを使用しようとしたが、既存のデータに変更が見られず、代わりに新しいインスタンスが作成されたため、このソリューションを提供しました。

7
Abdulvakaf K

デフォルトの動作では、すでに存在する場合はスキップするため、デフォルトでは既存のデータが上書きされません。

ただし、--upsertフラグを使用して更新できます。

6
Nachiket Kate

Mongo docに基づくと、この場合に--mode = upsertが機能しない理由は、デフォルトでは、mongoimportが_idフィールドを使用するためです。したがって、-dropが正解です。

--mode = upload:

デフォルトでは、mongoimportは_idフィールドを使用して、コレクション内のドキュメントをインポートファイル内のドキュメントと照合します。アップサートモードとマージモードの既存のドキュメントと照合するフィールドを指定するには、-upsertFieldsを使用します。

- 落とす:

入力からデータをインポートする前にターゲットインスタンスがコレクションを削除するように、インポートプロセスを変更します。

mongoimportドキュメント

1
myheartsgoon