mongoimport
を使用する場合 ファイルをMongoDBにインポートするには、既存のドキュメントをインポートするドキュメントとマージするオプションがあります。
この場合、インポートされたドキュメントが同じ_id
を持っている場合 インポート先のコレクション内の既存のドキュメントとしての値の場合、既存のドキュメントはインポートされるドキュメントとマージされます。
別のフィールド(_id
以外)を指定することもできます フィールド)必要に応じて一致するフィールドになります。
ドキュメントをマージすると、結果のドキュメントは既存のデータをインポートされたファイルにある新しいデータと結合します。同じデータはすべて同じままです。競合するデータがあると、インポートされたファイルのデータが既存のデータを上書きします。インポートされたドキュメントにMongoDBコレクションの対応するドキュメントにあるフィールドが含まれていない場合、そのフィールドはコレクション内で変更されません(つまり、削除または変更されません)。
ドキュメントをmongoimport
とマージする方法 merge
を使用することです モード。
例
pets
というコレクションがあるとします。 次のドキュメントが含まれています:
db.pets.find()
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
そして、pets.json
というJSONファイルがあります。 :
{"_id":2.0,"name":"Fetch","type":"Dog","weight":40.0} {"_id":3.0,"weight":10.0} {"_id":4.0,"name":"Hop","type":"Kangaroo","weight":60.0}
次のコマンドは、JSONファイルをコレクションにインポートします。
mongoimport --db=PetHotel --collection=pets --mode=merge --file=data/pets.json
これはmerge
を使用します 一致するドキュメントをインポートされたドキュメントとマージするモード。
結果を確認する
コレクションを見てみましょう。
db.pets.find()
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 } { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 }
ドキュメント1は変更されておらず、ドキュメント2の名前フィールドがFetch
に変更されていることがわかります。 、およびweight
もあります フィールドが追加されました。ドキュメント3にもウェイトフィールドが追加され、ドキュメント4が挿入されました。
アップサートフィールドの変更/秒
--upsertFields
を使用できます _id
以外のフィールドを指定するパラメータ 対戦する。このパラメーターを使用する場合は、フィールドをコンマ区切りのリストとして渡します。
pets2.json
という別のJSONファイルがあるとします。 インポートしたいのですが、次のようになります:
{"name":"Wag","type":"Dog","weight":20.0,"gooddog":true} {"name":"Bubbles","type":"Fish"}
このドキュメントには_id
は含まれていません したがって、各ドキュメントを一意に識別する他のフィールドと照合する必要があります。この場合、name
を使用できます およびtype
田畑。
したがって、次のmongoimport
を使用できます。 コマンド:
mongoimport --db=PetHotel --collection=pets --mode=merge --upsertFields=name,type --file=data/pets2.json
それでは、コレクションをもう一度確認しましょう:
db.pets.find()
結果:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "gooddog" : true, "weight" : 20 } { "_id" : 2, "name" : "Fetch", "type" : "Dog", "weight" : 40 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 10 } { "_id" : 4, "name" : "Hop", "type" : "Kangaroo", "weight" : 60 } { "_id" : ObjectId("5ff0548dd991410169412300"), "name" : "Bubbles", "type" : "Fish" }
Wagが更新されたことがわかります(ただし、_id
値は同じままです)。
一方、バブルはアップサートフィールドに一致しなかったため、挿入されました。
mongoimport
を確認します
mongoimport
MongoDBデータベースツールパッケージの一部です。 MongoDBデータベースツールは、MongoDBを操作するためのコマンドラインユーティリティのスイートです。
MongoDBデータベースツール/mongoimport
を使用しているかどうかわからない場合 インストールされている場合は、ターミナルまたはコマンドプロンプトで次のコマンドを実行して確認してください。
mongoimport --version
持っている場合は、バージョン情報などが表示されます。持っていない場合は、MongoDB Webサイトにあるインストール手順を使用して、システムにインストールできます。
コマンドを実行する場所
mongoimport
を実行する必要があることを忘れないでください システムのコマンドラインからのコマンド(新しいターミナルやコマンドプロンプトウィンドウなど)。
mongo
から実行しないでください シェル。