mongoimport 예제
이 페이지의 내용
이 페이지에는 mongoimport
의 예가 나와 있습니다.
mongo
shell이 아닌, 시스템 명령줄에서 mongoimport
를 실행합니다.
간단한 가져오기
mongoimport
는 mongoexport
로 만든 백업에서 데이터베이스를 복원합니다. mongoexport
에 대한 대부분의 인수는 mongoimport
에도 존재합니다.
다음 예시에서 mongoimport
는 contacts.json
파일의 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
(이)가 일치 항목당 하나의 기존 문서만 삭제합니다. 가져오기 파일의 문서가 데이터베이스의 단일 기존 문서와 일치하는지 확인하세요.
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
을 지정하면 CSV 파일의 첫 번째 줄을 사용하여 필드 이름을 결정하도록 mongoimport
에 지시합니다.
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 가져오기
필드 이름을 지정할 때 데이터 유형도 지정할 수 있습니다. 필드 이름과 유형을 지정하려면 --fields
, --fieldFile
또는 --headerline
중 하나와 함께 --columnsHaveTypes
(을)를 포함합니다.
필드 이름 및 데이터 유형을 <colName>.<type>(<arg>)
형식으로 지정합니다.
예를 들어 /example/file.csv
에는 다음 데이터가 포함되어 있습니다:
Katherine Gray, 1996-02-03, false, 1235, TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg== Albert Gilbert, 1992-04-24, true, 13, Q3VwY2FrZSBpcHN1bSBkb2xvciBzaXQgYW1ldCB0b290c2llIHJvbGwgYm9uYm9uIHRvZmZlZS4gQ2FuZHkgY2FuZXMgcGllIGNyb2lzc2FudCBjaG9jb2xhdGUgYmFyIGxvbGxpcG9wIGJlYXIgY2xhdyBtYWNhcm9vbi4gU3dlZXQgcm9sbCBjdXBjYWtlIGNoZWVzZWNha2Ugc291ZmZsw6kgYnJvd25pZSBpY2UgY3JlYW0uIEp1anViZXMgY2FrZSBjdXBjYWtlIG1hY2Fyb29uIGRhbmlzaCBqZWxseS1vIHNvdWZmbMOpLiBDYWtlIGFwcGxlIHBpZSBnaW5nZXJicmVhZCBjaG9jb2xhdGUgc3VnYXIgcGx1bS4gU3dlZXQgY2hvY29sYXRlIGNha2UgY2hvY29sYXRlIGNha2UganVqdWJlcyB0aXJhbWlzdSBvYXQgY2FrZS4gU3dlZXQgc291ZmZsw6kgY2hvY29sYXRlLiBMaXF1b3JpY2UgY290dG9uIGNhbmR5IGNob2NvbGF0ZSBtYXJzaG1hbGxvdy4gSmVsbHkgY29va2llIGNha2UgamVsbHkgYm==
다음 작업은 --fields
및 --columnsHaveTypes
옵션과 함께 mongoimport
를 사용하여 가져온 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 Services IAM 자격 증명 을 통해 인증을 지원하도록 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>
이러한 방식으로 AWS IAM 자격 증명을 사용하여 Atlas에 연결하면 이 예와 같이 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>
참고
또는 다음과 같이 --username
, --password
및 --awsSessionToken
옵션을 대신 사용하여 AWS 액세스 키 ID, 시크릿 액세스 키 및 세션 토큰(선택 사항)을 각각 연결 문자열 외부에 제공할 수 있습니다.
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>
명령줄 매개변수로 제공되는 경우 이러한 세 가지 옵션에는 퍼센트 인코딩이 필요하지 않습니다.
표준 AWS IAM 환경 변수를 사용하여 플랫폼에서 이러한 자격 증명을 설정할 수도 있습니다. mongoimport
는 MONGODB-AWS
authentication mechanism
을 사용할 때 다음 환경 변수를 확인합니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
설정된 경우 이러한 자격 증명은 연결 문자열이나 명시적 옵션을 통해 지정할 필요가 없습니다.
참고
AWS 환경 변수를 사용하여 이러한 값을 지정하기로 선택한 경우 이러한 자격 증명에 해당하는 명시적 또는 연결 문자열 옵션과 조합하여 사용할 수 없습니다. 액세스 키 ID 및 비밀 액세스 키(사용 중인 경우 세션 토큰도 함께 필요)에 환경 변수를 사용하거나 또는 명시적 또는 연결 문자열 옵션을 사용하여 각각을 지정합니다.
다음 예시에서는 bash
셸에서 이러한 환경 변수를 설정합니다.
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>'
다른 셸은 다른 구문을 사용하여 환경 변수를 설정합니다. 자세한 내용은 사용 중인 플랫폼의 설명서를 참조하세요.
다음 명령어로 이러한 환경 변수가 설정되었는지 확인할 수 있습니다.
env | grep AWS
설정이 완료되면 다음 예시에서는 이러한 환경 변수를 사용하여 MongoDB Atlas 클러스터에 연결합니다.
mongoimport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>