私はmongoimportを使用して、csvファイルを使用して1対多のリレーショナル構造をmongoDBに変換しようとしています。私のアプローチは、「1つの」ファイルをインポートし、upsertオプションを使用して「多くの」レコードをネストされた配列として追加することですが、追加するのではなく、元のドキュメントのみを置き換えるように見えます。
これはmongoimportの制限ですか、それとも何か間違ったことをしている可能性がありますか?
私はmongoimportを使用して、csvファイルを使用して1対多のリレーショナル構造をmongoDBに変換しようとしています。私のアプローチは、「1つの」ファイルをインポートし、upsertオプションを使用して「多くの」レコードをネストされた配列として追加することですが、追加するのではなく、元のドキュメントのみを置き換えるように見えます。
これはmongoimportの制限ですか、それとも何か間違ったことをしている可能性がありますか?
mongoimport を使用するとアップサートを実行できますが、通常の更新操作のように複雑な演算子を使用してデータを変更することはできません。これは mongoimport の制限です。基本的に、入力データの重複排除メカニズムとして機能する upsert 機能を使用している場合でも、インポートする各データは挿入可能である必要があります。
より洗練された方法でマージしたい場合は、ドライバの 1 つを使用し、選択した言語を使用してデータをマージするのが最善です。これには、型の忠実度に関する潜在的な問題を回避し、例外などを回避してコーディングできるという利点もあります。