mongoimport の例
項目一覧
このページでは mongoimport
の例を示します。
mongo
shell ではなく、システム コマンドラインから mongoimport
を実行します。
簡単なインポート
mongoimport
は、 mongoexport
で取得したバックアップからデータベースを復元します。 mongoexport
への引数のほとんどはmongoimport
にも存在します。
次の例では、 mongoimport
はJSONデータをcontacts.json
ファイルからusers
データベース内のコレクションcontacts
にインポートします。
mongoimport --db=users --collection=contacts --file=contacts.json
インポート中における一致するドキュメントの置き換え
--mode
upsert
を使用すると、 mongoimport
は、インポートファイル内のドキュメントと一致するデータベース内の既存ドキュメントをインポートファイルのドキュメントに置き換えます。 データベース内の既存のドキュメントと一致しないドキュメントは、通常どおり挿入されます。 デフォルトでは、 mongoimport
は_id
フィールドに基づいてドキュメントと一致します。 照合するフィールドを指定するには、 --upsertFields
を使用します。
example
データベース内の people
コレクションにある次のドキュメントを検討してみましょう。
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com" }
次のドキュメントが people-20160927.json
JSON ファイルにあります。JSON オブジェクトの _id
フィールドは、people
コレクション内のドキュメントの _id
フィールドと一致します。
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
people-20160927.json
ファイルをインポートし、インポート ファイル内のドキュメントと一致するデータベース内のドキュメントを置き換えるには、次のように--mode
upsert
を指定します。
mongoimport -c=people -d=example --mode=upsert --file=people-20160927.json
上記操作の結果、people
コレクション内のドキュメントには、次のように、インポートされたドキュメントのフィールドのみが含まれます。
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
インポート時の一致ドキュメントの結合
--mode
merge
を使用すると、 mongoimport
を使用して、新しいレコードのフィールドをデータベース内の既存のドキュメントとマージできます。 データベース内の既存のドキュメントと一致しないドキュメントは、通常どおり挿入されます。 デフォルトでは、 mongoimport
は_id
フィールドに基づいてドキュメントと一致します。 照合するフィールドを指定するには、 --upsertFields
を使用します。
example
データベースの people
コレクションには次のドキュメントが含まれています。
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com" }
次のドキュメントが people-20160927.json
JSON ファイルにあります。JSON オブジェクトの _id
フィールドは、people
コレクション内のドキュメントの _id
フィールドと一致します。
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "email": "crystal.duncan@example.com", "likes" : [ "running", "pandas", "software development" ] }
people-20160927.json
ファイルをインポートし、インポートファイルからデータベース内の一致するドキュメントを使用してドキュメントをマージするには、次のように--mode
merge
を指定します。
mongoimport -c=people -d=example --mode=merge --file=people-20160927.json
インポート操作では、JSON ファイルのフィールドとデータベース内の元のドキュメントを組み合わせて、 _id
フィールドに基づいてドキュメントを一致させます。 インポート プロセス中に、mongoimport
は新しいusername
likes
フィールドとemail
フィールドをドキュメントに追加し、 フィールドをインポートされたドキュメントの値で次のように更新します。
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal.duncan@example.com", "username" : "crystal", "likes" : [ "running", "pandas", "software development" ] }
一致するドキュメントの削除
バージョン100.0.0の新機能。
--mode
delete
を使用すると、 mongoimport
はインポート ファイル内のドキュメントと一致するデータベース内の既存のドキュメントを削除します。 データベース内の既存のドキュメントと一致しないドキュメントは無視されます。 デフォルトでは、 mongoimport
は_id
フィールドに基づいてドキュメントと一致します。 照合するフィールドを指定するには、 --upsertFields
を使用します。
注意
--mode
delete
では、 mongoimport
は一致するごとに既存のドキュメントを 1 つだけ削除します。 インポート ファイルのドキュメントが、データベースの既存のドキュメントの 1 つと一致していることを確認します。
example
データベースの people
コレクションには次のドキュメントが含まれています。
{ "_id" : ObjectId("580100f4da893943d393e909"), "name" : "Crystal Duncan", "region" : "United States", "email" : "crystal@example.com", "employee_id" : "5463789356" }
次のドキュメントが people-20160927.json
JSON ファイルにあります。JSON オブジェクトの _id
フィールドは、people
コレクション内のドキュメントの _id
フィールドと一致します。
{ "_id" : ObjectId("580100f4da893943d393e909"), "username" : "crystal", "email": "crystal.duncan@example.com", "likes" : [ "running", "pandas", "software development" ], "employee_id" : "5463789356" }
people-20160927.json
ファイル内のドキュメントと一致するデータベース内のドキュメントを削除するには、次のように--mode
delete
を指定します。
mongoimport -c=people -d=example --mode=delete --file=people-20160927.json
データベースと入力ファイルは_id
フィールドが一致しているため、 mongoimport
は一致するドキュメントをpeople
コレクションから削除します。 --upsertFields
を使用してemployee_id
フィールドを指定しても、同じ結果が得られます。このフィールドはデータベースと入力ファイル間でも一致します。
JSON
認証付きで実行中のリモート ホストへの のインポート
次の例では、 mongoimport
は、ファイル/opt/backups/mdb1-examplenet.json
から認証が有効になっているリモート MongoDB database 上のデータベースmarketing
内のcontacts
コレクションにデータをインポートします。
mongoimport
は、ポート37017
経由でホストmongodb1.example.net
で実行されているmongod
インスタンスに接続します。 ユーザー名user
で認証します。この例では--password
オプションを省略し、 mongoimport
でパスワードの入力を求めるようにしています。
mongoimport --host=mongodb1.example.net --port=37017 --username=user --collection=contacts --db=marketing --file=/opt/backups/mdb1-examplenet.json
CSV
インポート
一般的な CSV インポート
次の例では、 mongoimport
は、 /opt/backups/contacts.csv
ファイル内のCSV形式のデータを、 27017
というローカルホストのポート番号で実行されている MongoDB インスタンスのusers
データベース内のコレクションcontacts
にインポートします。
--headerline
を指定すると、 mongoimport
は CSV ファイルの最初の行を使用してフィールドの名前を決定するように指示します。
mongoimport --db=users --collection=contacts --type=csv --headerline --file=/opt/backups/contacts.csv
mongoimport
は、 -c
または--collection
が指定されていない場合、コレクション名として拡張子を持たない入力ファイル名を使用します。 したがって、次の例は同等です。
mongoimport --db=users --type=csv --headerline --file=/opt/backups/contacts.csv
指定されたフィールドタイプでのCSVインポート
フィールド名を指定する際には、データ型を指定することもできます。 フィールド名とタイプを指定するには、--columnsHaveTypes
--fields
、--fieldFile
、または のいずれかを持つ--headerline
を含めます。
フィールド名とデータ型を「<colName>.<type>(<arg>)
」形式で指定します。
たとえば、/example/file.csv
には次のデータが含まれています。
Katherine Gray, 1996-02-03, false, 1235, TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg== Albert Gilbert, 1992-04-24, true, 13, Q3VwY2FrZSBpcHN1bSBkb2xvciBzaXQgYW1ldCB0b290c2llIHJvbGwgYm9uYm9uIHRvZmZlZS4gQ2FuZHkgY2FuZXMgcGllIGNyb2lzc2FudCBjaG9jb2xhdGUgYmFyIGxvbGxpcG9wIGJlYXIgY2xhdyBtYWNhcm9vbi4gU3dlZXQgcm9sbCBjdXBjYWtlIGNoZWVzZWNha2Ugc291ZmZsw6kgYnJvd25pZSBpY2UgY3JlYW0uIEp1anViZXMgY2FrZSBjdXBjYWtlIG1hY2Fyb29uIGRhbmlzaCBqZWxseS1vIHNvdWZmbMOpLiBDYWtlIGFwcGxlIHBpZSBnaW5nZXJicmVhZCBjaG9jb2xhdGUgc3VnYXIgcGx1bS4gU3dlZXQgY2hvY29sYXRlIGNha2UgY2hvY29sYXRlIGNha2UganVqdWJlcyB0aXJhbWlzdSBvYXQgY2FrZS4gU3dlZXQgc291ZmZsw6kgY2hvY29sYXRlLiBMaXF1b3JpY2UgY290dG9uIGNhbmR5IGNob2NvbGF0ZSBtYXJzaG1hbGxvdy4gSmVsbHkgY29va2llIGNha2UgamVsbHkgYm==
次の操作では、 mongoimport
を--fields
} オプションと--columnsHaveTypes
オプションとともに使用して、インポートされた CSV データのフィールド名と BSON types の両方を指定します。
mongoimport --db=users --collection=contacts --type=csv \ --columnsHaveTypes \ --fields="name.string(),birthdate.date(2006-01-02),contacted.boolean(),followerCount.int32(),thumbnail.binary(base64)" \ --file=/example/file.csv
空白フィールドを無視
空白フィールドを無視するには、 --ignoreBlanks
オプションを使用します。 CSVおよびTSVのインポートでは、このオプションを選択すると null 値を持つフィールドがコレクションに挿入されないため、ほとんどの場合、必要な機能が提供されます。
次の例では、data.csv
からデータをインポートし、空白のフィールドをスキップします。
mongoimport --db=users --collection=contacts --type=csv --file=/example/data.csv --ignoreBlanks
AWS IAM 認証情報を使用して MongoDB Atlas クラスターに接続
バージョン 100.1.0 の新機能。
Amazon Web ServicesIAM MongoDB Atlas認証情報 による認証をサポートするように構成済みの connection string
クラスターに接続するには、mongoimport
は、次のように提供します
mongoimport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
AtlasAmazon Web Servicesこの方法で IAM 認証情報を使用してMONGODB-AWS
authentication mechanism
$external
authSource
に接続するには、この例に示すように、 と が使用されます。
AWS セッショントークンを使用する場合 同様に、AWS_SESSION_TOKEN
authMechanismProperties
値を次のとおり指定します。
mongoimport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>
注意
AWS アクセスキー ID、シークレット アクセス キー、またはセッション トークンに次の文字が含まれている場合。
: / ? # [ ] @
上記文字はパーセント エンコーディングを使用して変換される必要があります。
あるいは、次のように、 、 、 --username
オプションを使用して、Amazon Web Services IDstring--password
アクセスキー--awsSessionToken
、シークレットアクセスキー、およびオプションのセッショントークンをそれぞれ接続 の外部で提供することもできます。
mongoimport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>
コマンドライン パラメーターとして指定する場合、これら 3 つのオプションにパーセント エンコーディングは必要ありません。
標準のAmazon Web Services IAM 環境変数 を使用してプラットフォーム上でこれらの認証情報を設定することもできます 。mongoimport
を使用すると、MONGODB-AWS
authentication mechanism
は次の環境変数をチェックします。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
設定されている場合、これらの認証情報を接続文字列や明示的なオプションで指定する必要はありません。
注意
Amazon Web Services の環境変数を使用してこれらの値を指定する場合、これらの認証情報に対応する明示的オプションまたは接続文字列 オプションと混在させることはできません。アクセス キー ID とシークレット アクセス キー(および使用する場合はセッション トークンも)の環境変数を使用、または代わりに明示的オプションもしくは接続文字列 オプションをそれぞれを指定します。
次の例では、bash
shell でこれらの環境変数を設定しています。
export AWS_ACCESS_KEY_ID='<aws access key id>' export AWS_SECRET_ACCESS_KEY='<aws secret access key>' export AWS_SESSION_TOKEN='<aws session token>'
他の shell では、環境変数を設定する構文は異なります。詳細については、ご使用プラットフォームのドキュメントを参照してください。
次のコマンドで、これらの環境変数が設定されているかどうかを確認できます。
env | grep AWS
設定が完了すると、次の例では、これらの環境変数を使用して MongoDB Atlas クラスターに接続します。
mongoimport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>