Docs Menu
Docs Home
/
MongoDB Database Tools
/

mongoimport 예제

이 페이지의 내용

  • 간단한 가져오기
  • 가져오기 중 일치하는 문서 바꾸기
  • 가져오기 중 일치하는 문서 병합
  • 일치하는 문서 삭제
  • 인증을 사용하여 실행 중인 원격 호스트로 JSON 가져오기
  • CSV 가져오기
  • 자세히 알아보기

이 페이지에는 mongoimport 의 예가 나와 있습니다.

mongo shell이 아닌, 시스템 명령줄에서 mongoimport를 실행합니다.

mongoimportmongoexport로 만든 백업에서 데이터베이스를 복원합니다. mongoexport에 대한 대부분의 인수는 mongoimport에도 존재합니다.

다음 예시에서 mongoimportcontacts.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는 다음과 같이 문서에 새로운 usernamelikes 필드를 추가하고, 가져온 문서의 값으로 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 필드가 일치하므로 mongoimportpeople 컬렉션에서 일치하는 문서를 삭제합니다. --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을 지정하면 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

필드 이름을 지정할 때 데이터 유형도 지정할 수 있습니다. 필드 이름과 유형을 지정하려면 --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 옵션을 사용합니다. CSVTSV 가져오기의 경우 이 옵션은 null 값이 있는 필드를 컬렉션에 삽입하지 않으므로 대부분의 경우 원하는 기능을 제공합니다.

다음 예에서는 빈 필드를 건너뛰고 data.csv에서 데이터를 가져옵니다.

mongoimport --db=users --collection=contacts --type=csv --file=/example/data.csv --ignoreBlanks

버전 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>

참고

AWS 액세스 키 ID, 보안 액세스 키 또는 세션 토큰에 다음 문자가 포함되어 있는 경우

: / ? # [ ] @

이러한 문자는 퍼센트 인코딩을 사용해 변환해야 합니다.

또는 다음과 같이 --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 환경 변수를 사용하여 플랫폼에서 이러한 자격 증명을 설정할 수도 있습니다. mongoimportMONGODB-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>

돌아가기

행동