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