Docs Menu
Docs Home
/
MongoDB データベース ツール
/

mongoimport の例

項目一覧

  • 簡単なインポート
  • インポート中における一致するドキュメントの置き換え
  • インポート時の一致ドキュメントの結合
  • 一致するドキュメントの削除
  • 認証付きで実行中のリモート ホストへの JSONのインポート
  • CSV インポート
  • 詳細

このページでは mongoimportの例を示します。

mongo shell ではなく、システム コマンドラインから mongoimport を実行します。

mongoimportは、 mongoexportで取得したバックアップからデータベースを復元します。 mongoexportへの引数のほとんどはmongoimportにも存在します。

次の例では、 mongoimportJSONデータを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フィールドを指定しても、同じ結果が得られます。このフィールドはデータベースと入力ファイル間でも一致します。

次の例では、 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

次の例では、 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

フィールド名を指定する際には、データ型を指定することもできます。 フィールド名とタイプを指定するには、--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

バージョン 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-AWSauthentication mechanism $externalauthSourceに接続するには、この例に示すように、 と が使用されます。

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-AWSauthentication 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>

戻る

動作