문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ / /

create

이 페이지의 내용

  • 구문
  • 매개변수
  • 출력
  • 예제
  • 기본 예시
  • 와일드카드 사용 예시
  • 여러 데이터 소스 예시
  • 컬렉션 검증
  • 오류 문제 해결

create 명령은 연합 데이터베이스 인스턴스 저장소 구성의 기존 stores 또는 컬렉션의 보기 에 대한 컬렉션을 만듭니다.

와일드카드 "*" 는 두 가지 방법으로 create 명령과 함께 사용할 수 있습니다.

  • 지정된 stores 연합 데이터베이스 인스턴스 저장소의 파일 및 폴더에 매핑되는 collection을 동적으로 생성하기 위한 collection의 이름입니다.

  • path 매개 변수에서 stores 연합 데이터베이스 인스턴스 저장소의 지정된 파일 경로에 있는 여러 파일 및 폴더에 매핑되는 collection을 생성합니다.

collection 또는 뷰를 만드는 방법에 대해 자세히 알아보려면 탭을 클릭하세요.

이 탭에는 collection을 생성하기 위한 구문과 매개 변수가 포함되어 있습니다. 해당 연합 데이터베이스 인스턴스 저장소의 구문 및 매개변수에 대해 자세히 알아보려면 해당 연합 데이터베이스 인스턴스 저장소의 탭을 선택합니다.

이 탭에는 S3 연합 데이터베이스 인스턴스 저장소에 대한 컬렉션을 만들기 위한 구문과 매개 변수가 포함되어 있습니다.

이 탭에는 Azure 연합 데이터베이스 인스턴스 저장소에 대한 컬렉션을 만들기 위한 구문과 매개 변수가 포함되어 있습니다.

이 탭에는 연합 데이터베이스 인스턴스 저장소에 대한 컬렉션을 생성하기 위한 구문과 매개 변수가 포함되어 있습니다.

이 탭에는 HTTP 연합 데이터베이스 인스턴스 저장소에 대한 컬렉션을 생성하기 위한 구문과 매개 변수가 포함되어 있습니다.

참고

미리 보기

HTTP 데이터 저장소에 대한 지원은 미리보기 기능으로 제공됩니다. 기능 및 해당 문서는 미리보기 단계 중에 언제든지 변경될 수 있습니다.

이 탭에는 Online Archive 연합 데이터베이스 인스턴스 저장소에 대한 컬렉션을 생성하기 위한 구문과 매개 변수가 포함되어 있습니다.

이 탭에는 파이프라인 내부의 SQL 문을 통해 지정하는 소스 컬렉션 또는 컬렉션에 대한 뷰를 만들기 위한 구문과 매개 변수가 포함되어 있습니다.

이 탭에서는 다른 컬렉션에서 집계 파이프라인을 실행하는 표준 보기를 만들기 위한 구문과 매개 변수에 대해 설명합니다.

이 탭에서는 $sql 단계를 사용하여 SQL 뷰를 만들기 위한 구문과 매개 변수에 대해 설명합니다.

db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "path" : "<path-to-files-or-folders>", "defaultFormat" : "<file-extension>", "omitAttributes": <boolean> }]})
db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "path" : "<path-to-files-or-folders>", "defaultFormat" : "<file-extension>", "omitAttributes": <boolean> }]})
db.runCommand({ "create" : "<collection-name>"|"*", "dataSources" : [{ "storeName" : "<store-name>", "database" : "<atlas-database-name>", "collection" : "<atlas-collection-name>" | "collectionRegex": "<regex-pattern>" }]})
db.runCommand({ "create" : "<collection-name>", "dataSources" : [{ "storeName" : "<store-name>", "allowInsecure" : true|false, "urls" : [ "<url>" ], "defaultFormat" : "<file-extension>" }]})
db.runCommand({ "create" : "<collection-name>|*", "dataSources" : [{ "storeName" : "<store-name>", "datasetName" : "<online-archive-dataset-name>", "datasetPrefix": "<prefix-name>", "trimLevel" : <trim-number>, "maxDatasets": <maximum-number-of-datasets> }]})
db.runCommand({ "create" : "<view-name>", "viewOn" :" <collection-name>", "pipeline" : ["<stage1>","<stage2>",...] })
db.runCommand({ "create" : "<view-name>", "pipeline" : ["$sql": {"statement": "<SQL-statement>", "excludeNamespaces": true | false ]} })
매개 변수
유형
설명
필요성
<collection-name>|*
문자열

Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름이거나 컬렉션을 동적으로 생성하기 위한 와일드카드 "*" 입니다.

컬렉션 이름에 * 를 지정하고 dataSources.collection 필드에 collectionName() 함수를 지정하여 파일 경로에서 컬렉션 이름을 동적으로 생성할 수 있습니다. 기본적으로 Atlas Data Federation은 최대 100 와일드카드 collection을 생성합니다. Atlas Data Federation이 databases.[n].maxWildcardCollections 매개 변수를 사용하여 자동으로 생성하는 최대 와일드카드 collection 수를 사용자 지정할 수 있습니다. 각 와일드카드 collection에는 dataSource 하나만 포함할 수 있습니다.

필수 사항
dataSources
객체

각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 stores 배열에 저장합니다.

필수 사항
dataSources.storeName
문자열

컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 stores 배열의 stores.[n].name 과 일치해야 합니다.

필수 사항
dataSources.path
문자열
파일 및 폴더의 경로입니다. prefix 경로의 모든 파일과 폴더를 캡처하려면 / 을 지정합니다. 자세한 내용 은 S3 데이터의 경로 정의 를 참조하세요.
필수 사항
dataSources.defaultFormat
문자열

연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.

.json, .json.gz, .bson, .bson.gz, .avro, .avro.gz, .orc, .tsv, .tsv.gz, .csv, .csv.gz, .parquet

이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다.

옵션
dataSources.omitAttributes
부울

Atlas Data Federation이 컬렉션에 추가하는 속성(키 및 값 쌍)을 생략할지 여부를 지정하는 플래그입니다. 다음 값 중 하나를 지정할 수 있습니다.

  • false - 속성을 추가합니다.

  • true - 속성 생략

생략하면 기본값은 false 이며 Atlas Data Federation에서 속성을 추가합니다.

옵션
매개 변수
유형
설명
필요성
<collection-name>|*
문자열

Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름이거나 컬렉션을 동적으로 생성하기 위한 와일드카드 "*" 입니다.

컬렉션 이름에 * 를 지정하고 dataSources.collection 필드에 collectionName() 함수를 지정하여 파일 경로에서 컬렉션 이름을 동적으로 생성할 수 있습니다. 기본적으로 Atlas Data Federation은 최대 100 와일드카드 collection을 생성합니다. Atlas Data Federation이 databases.[n].maxWildcardCollections 매개 변수를 사용하여 자동으로 생성하는 최대 와일드카드 collection 수를 사용자 지정할 수 있습니다. 각 와일드카드 collection에는 dataSource 하나만 포함할 수 있습니다.

필수 사항
dataSources
객체

각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 stores 배열에 저장합니다.

필수 사항
dataSources.storeName
문자열

컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 stores 배열의 stores.[n].name 과 일치해야 합니다.

필수 사항
dataSources.path
문자열
파일 및 폴더의 경로입니다. prefix 경로의 모든 파일과 폴더를 캡처하려면 / 을 지정합니다. 자세한 내용 은 S3 데이터의 경로 정의 를 참조하세요.
필수 사항
dataSources.defaultFormat
문자열

연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.

.json, .json.gz, .bson, .bson.gz, .avro, .avro.gz, .orc, .tsv, .tsv.gz, .csv, .csv.gz, .parquet

이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다.

옵션
dataSources.omitAttributes
부울

Atlas Data Federation이 컬렉션에 추가하는 속성(키 및 값 쌍)을 생략할지 여부를 지정하는 플래그입니다. 다음 값 중 하나를 지정할 수 있습니다.

  • false - 속성을 추가합니다.

  • true - 속성 생략

생략하면 기본값은 false 이며 Atlas Data Federation에서 속성을 추가합니다.

옵션
매개 변수
유형
설명
필요성
<collection-name>|*
문자열

Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름이거나 컬렉션을 동적으로 생성하기 위한 와일드카드 "*" 입니다.

컬렉션 이름에 * 를 지정하고 dataSources.collection 매개변수를 생략하여 컬렉션 이름을 동적으로 생성할 수 있습니다.

동적으로 생성된 데이터베이스의 경우 컬렉션 이름에 * 를 지정하고 다음 매개변수를 생략하여 와일드카드 컬렉션을 생성할 수 있습니다.

  • dataSources.collection

  • dataSources.database

와일드카드(*) 컬렉션의 경우 dataSources.collectionRegex 매개변수를 사용하여 정규식 패턴과 일치하는 이름의 컬렉션을 생성할 수 있습니다.

필수 사항
dataSources
객체

각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 stores 배열에 저장합니다.

필수 사항
dataSources.storeName
문자열

컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 stores 배열의 stores.[n].name 과 일치해야 합니다.

필수 사항
dataSources.database
문자열
Atlas cluster의 컬렉션이 포함된 데이터베이스의 이름입니다. 동적으로 생성된 데이터베이스에 대한 와일드카드(*) 컬렉션을 생성하려면 이 매개변수를 생략해야 합니다.
조건부
dataSources.collection
문자열
Atlas 데이터베이스에 있는 컬렉션의 이름입니다. 와일드카드(*) 컬렉션을 만들려면 이 매개변수를 생략해야 합니다.
조건부
dataSources.collectionRegex
문자열

와일드카드( ) 컬렉션을 만드는 데 사용할 정규식* 패턴입니다. 정규식 구문에 대해 자세히 알아보려면 Go 프로그래밍 언어를 참조하세요.

와일드카드(*) 컬렉션 이름에 정규식 패턴을 사용하려면 dataSources.collection 매개변수를 지정하지 않아야 합니다.

옵션
매개 변수
유형
설명
필요성
<collection-name>
문자열
Atlas Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름입니다. * 을(를) 지정하여 컬렉션 이름을 동적으로 생성할 수 없습니다.
필수 사항
dataSources
객체

각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 stores 배열에 저장합니다.

필수 사항
dataSources.storeName
문자열

컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 stores 배열의 stores.[n].name 과 일치해야 합니다.

필수 사항
dataSources.allowInsecure
부울

지정된 URL의 체계의 유효성을 검사합니다. 값은 다음 중 하나일 수 있습니다.

  • true 안전하지 않은 HTTP 체계 허용

  • false 보안 HTTPS 체계만 허용합니다(기본값).

true(참)인 경우 Atlas Data Federation:

  • 서버의 인증서 체인과 호스트 이름을 확인하지 않습니다.

  • 서버에서 제공하는 모든 호스트 이름을 가진 모든 인증서를 수락합니다.

경고: 이 값을 true 로 설정하면 데이터가 중간자(man-in-the-middle) 공격에 취약해져 데이터의 기밀성과 무결성이 손상될 수 있습니다. Atlas Data Federation을 테스트하고 시작하는 경우에만 이 값을 true 로 설정합니다.

생략하는 경우 기본값은 false입니다.

옵션
dataSources.urls
문자열 배열 또는 빈 배열
공개적으로 액세스할 수 있는 데이터 파일의 URL입니다. 인증이 필요한 URL은 지정할 수 없습니다. Atlas Data Federation은 각 URL 에 대한 파티션을 생성합니다. 비어 있거나 생략된 경우 Atlas Data Federation은 dataSources.storeName 매개변수에 지정된 저장소의 URL을 사용합니다.
필수 사항
dataSources.defaultFormat
문자열

연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.

.json, .json.gz, .bson, .bson.gz, .avro, .avro.gz, .orc, .tsv, .tsv.gz, .csv, .csv.gz, .parquet

이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다.

포함된 경우 지정된 형식은 dataSourceURL에만 적용됩니다.

옵션
매개 변수
유형
설명
필요성
<collection-name>
문자열

Atlas Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름입니다. 컬렉션 이름을 동적으로 생성하려면 다음을 수행해야 합니다.

  • <collection-name> 필드의 값을 * 로 설정합니다.

  • datasetPrefixtrimLevel 필드에 값을 입력합니다.

  • datasetName 필드를 생략합니다.

필수 사항
dataSources
객체

각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 stores 배열에 저장합니다.

컬렉션의 모든 dataSources 가 온라인 아카이브 스토어에 매핑되는 경우에만 와일드카드 컬렉션에 여러 dataSources 를 지정할 수 있습니다.

필수 사항
dataSources.storeName
문자열

컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 stores 배열의 stores.[n].name 과 일치해야 합니다.

필수 사항
datasetName
문자열

컬렉션과 매핑할 온라인 아카이브 데이터 세트의 이름입니다. 온라인 아카이브 datasetName 의 형식은 다음과 같습니다.

<version>$<type>$<subtype>$<clusterName>$<dbName>$<collectionName>$<snapshotId>

와일드카드 컬렉션에는 datasetName 를 지정할 수 없습니다. datasetPrefix 를 지정하는 경우 와일드카드가 아닌 컬렉션에 대해 datasetName 를 지정할 수 없습니다.

조건부
datasetPrefix
문자열

와일드카드 컬렉션에만 필요합니다. 와일드카드가 아닌 컬렉션의 경우 선택 사항입니다.

온라인 아카이브 데이터 세트 이름과 일치시킬 데이터 세트 이름 접두사입니다.

와일드카드 컬렉션에 이 매개 변수를 지정하면 Atlas Data Federation은 접두사가 지정한 datasetPrefix 와 일치하는 데이터 세트 이름에만 컬렉션을 매핑합니다.

와일드카드가 아닌 컬렉션에 대해 이 매개 변수를 지정하면 Atlas Data Federation은 최신 데이터 세트(가장 최근에 캡처한 스냅샷의 경우)를 컬렉션에 매핑합니다. 와일드카드가 아닌 컬렉션에 대해 이 매개 변수를 지정하려면 datasetName 를 생략해야 합니다.

조건부
maxDatasets
int

와일드카드 컬렉션에만 해당됩니다.

데이터 소스에 대한 컬렉션을 동적으로 생성할 데이터 세트의 최대 개수입니다. 값은 0 보다 커야 합니다. Atlas Data Federation은 데이터 세트를 알파벳 역순으로 반환합니다.

옵션
trimLevel
int

와일드카드 컬렉션에만 해당됩니다.

나머지 필드를 와일드카드 컬렉션 이름에 매핑하기 전에 데이터 세트 이름 왼쪽에서 잘라낼 문자 수입니다. 값은 0 보다 커야 합니다. 생략하면 기본값은 0 입니다.

와일드카드 컬렉션에 대해서만 이 설정을 지정할 수 있습니다.

옵션
매개 변수
유형
설명
필요성
<view-name>
문자열
의 이름입니다. 뷰 이름은 고유 해야 합니다. 컬렉션 이름 또는 동일한 데이터베이스에 있는 다른 뷰 이름과 같을 수 없습니다.
필수 사항
viewOn
문자열
뷰를 만들 소스 컬렉션의 이름입니다.
필수 사항
pipeline
단계배열

뷰를 만드는 데 사용할 집계 파이프라인 단계 의 배열입니다.

뷰 정의 파이프라인은 $lookup 또는 $facet 과 같은 중첩된 파이프라인 단계 내부에서도 $out 또는 $merge 단계를 포함할 수 없습니다.

필수 사항
매개 변수
유형
설명
필요성
<view-name>
문자열
의 이름입니다. 뷰 이름은 고유 해야 합니다. 컬렉션 이름 또는 동일한 데이터베이스에 있는 다른 뷰 이름과 같을 수 없습니다.
필수 사항
pipeline
단계배열
컬렉션에 적용할 집계 파이프라인 단계 입니다. SQL 뷰의 경우 pipeline 는 SQL 문에서 소스 컬렉션을 지정하는 $sql 단계로 시작해야 합니다.
필수 사항

명령이 성공하면 다음 출력을 반환합니다. 컬렉션 검증 에서 명령을 실행하여 결과를 확인할 수 있습니다. 실패할 경우 아래의 오류 문제 해결 을 참조하여 권장 해결 방법을 확인하세요.

{ ok: 1 }

다음 예제에서는 다음 설정으로 AWS S3 스토어의 샘플 airbnb 데이터를 사용합니다.

스토어 이름
egS3Store
부위
us-east-2
Bucket
test-data-federation
접두사
json
구분자
/
샘플 데이터세트
airbnb

다음 예제에서는 다음 설정으로 Azure Blob Storage 컨테이너의 샘플 airbnb 데이터를 사용합니다.

스토어 이름
egAzureStore
접두사
sample
구분자
/
샘플 데이터세트
airbnb

다음 예시에서는 다음과 같은 설정으로 Atlas 클러스터의 샘플 데이터 세트 에서 sample_airbnb.listingsAndReviews 컬렉션을 사용합니다.

스토어 이름
egAtlasStore
샘플 데이터세트
sample_airbnb.listingsAndReviews

Atlas cluster에 샘플 데이터 로드를 검토하여 Atlas cluster에 샘플 데이터 세트를 로드합니다.

다음 예제에서는 다음 URL을 사용합니다.

  • https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json

  • https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json

다음 예제에서는 다음 설정으로 온라인 아카이브를 사용합니다.

스토어 이름
adlStore
온라인 아카이브 이름
v1$atlas$archive$testCluster$sample_airbnb$219eb1cb-20a6-4ce3-800a-aaefd6c227c6$66d512939b1fa57fe057aa22

다음 명령은 스토리지 구성의 sampleDB 데이터베이스에 airbnb 라는 컬렉션을 생성합니다.

airbnb 컬렉션은 이름이 egS3StoreS3 저장소의 json 폴더에 있는 airbnb 샘플 데이터 세트에 매핑됩니다.

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egS3Store", "path" : "/json/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "airbnb",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/airbnb",
"defaultFormat" : ".json"
}]
}]
}]
}
}

airbnb 컬렉션은 이름이 egAzureStoreAzure 스토어의 sample 폴더에 있는 airbnb 샘플 데이터 세트에 매핑됩니다.

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egAzureStore", "path" : "/sample/airbnb", "defaultFormat" : ".json" }]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb

airbnb 컬렉션은 Atlas cluster의 sample_airbnb 데이터베이스에 있는 listingsAndReviews 샘플 컬렉션에 매핑됩니다.

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "egAtlasStore", "database" : "sample_airbnb", "collection" : "listingsAndReviews" }]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "airbnb",
"dataSources" : [{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collection" : "listingsAndReview"
}]
}]
}]
}
}

airbnb 컬렉션에는 컬렉션의 각 URL 에 대한 파티션이 포함되어 있습니다. allowInsecure 플래그가 설정되지 않았으며 기본값은 false 입니다.

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "http-store", "urls": ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json","https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"], "defaultFormat" : ".json" }]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "http-store",
"provider" : "http",
"urls" : [
"https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json",
"https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"
],
"defaultFormat" : ".json"
}
],
"databases" : [
{
"name" : "sampleDb",
"collections" : [
{
"name" : "airbnb",
"dataSources" : [
{
"storeName" : "http-store",
"defaultFormat" : ".json",
"urls" : [
"https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json",
"https://atlas-data-lake.s3.amazonaws.com/json/sample_weatherdata/data.json"
]
}
]
}
]
}
]
}
}

airbnb 컬렉션은 sample_airbnb.listingsAndReviews 파이프라인의 온라인 아카이브 데이터 세트에 매핑됩니다.

use sampleDB
db.runCommand({ "create" : "airbnb", "dataSources" : [{ "storeName" : "adlStore", "datasetName" : "v1$atlas$snapshot$testCluster$sample_airbnb$listingsAndReviews" }]})
{ "ok" : 1 }

이 예에서는 create 명령으로 와일드카드 "*" 를 지정하는 방법을 보여줍니다.

다음 예제에서는 create 명령을 사용하여 collection을 동적으로 생성합니다.

다음 예제에서는 create 명령을 사용하여 egS3Store 연합 데이터베이스 인스턴스 저장소에서 /json/ 경로의 파일에 대한 collection을 동적으로 생성합니다. collectionName() 함수를 사용하여 지정된 경로에 있는 파일 이름을 따라 collection 이름을 지정합니다.

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egS3Store", "path": "/json/{collectionName()}"}]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "*",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/{collectionName()}"
}]
}]
}]
}
}

다음 예시에서는 create 명령을 사용하여 egS3Store 라는 Atlas Data Federation 저장소에 매핑되는 egCollection 컬렉션을 만듭니다. egS3Store 에는 json 폴더에 샘플 데이터 세트 airbnb 가 포함되어 있습니다.

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egS3Store", "path": "/json/*"}]}})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
egCollection
db.runCommand({"storageGetConfig" : 1 })
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
}],
"databases" : [{
"name" : "sample",
"collections" : [{
"name" : "egCollection",
"dataSources" : [{
"storeName" : "egS3Store",
"path" : "/json/*"
}]
}]
}]
}
}

다음 예에서는 create 명령으로 와일드카드 "*" 를 지정하는 방법을 보여줍니다.

다음 예제에서는 create 명령을 사용하여 egAzureStore 연합 데이터베이스 인스턴스 저장소에서 /sample/ 경로의 파일에 대한 collection을 동적으로 생성합니다. collectionName() 함수를 사용하여 지정된 경로에 있는 파일 이름을 따라 collection 이름을 지정합니다.

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAzureStore", "path": "/json/{collectionName()}"}]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
airbnb

다음 예시에서는 create 명령을 사용하여 egAzureStore 라는 Atlas Data Federation 저장소에 매핑되는 egCollection 컬렉션을 만듭니다. egAzureStore 에는 sample 폴더에 샘플 데이터 세트 airbnb 가 포함되어 있습니다.

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egAzureStore", "path": "/sample/*"}]}})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
egCollection

이 예에서는 create 명령으로 와일드카드 "*" 를 지정하는 방법을 보여줍니다.

다음 예제에서는 create 명령을 사용하여 Atlas 클러스터 이름 myTestClustersample_airbnb 데이터베이스의 문서에 대한 컬렉션을 동적으로 생성합니다.

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore", "database": "sample_airbnb"}]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}],
"databases" : [{
"name" : "sampleDB",
"collections" : [{
"name" : "*",
"dataSources" : [{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb"
}]
}]
}]
}
}
show collections
listingsAndReviews

다음 예시에서는 create 명령을 사용하여 이름이 myTestCluster 인 Atlas cluster의 sample_airbnb 데이터베이스에 지정된 정규식 패턴과 일치하는 컬렉션을 동적으로 생성합니다.

use sampleDB
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore", "database": "sample_airbnb", "collectionRegex" : "^list" }]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}
],
"databases" : [
{
"name" : "sbxDb",
"collections" : [
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collectionRegex" : "^list"
}
]
}
]
}
]
}
}
show collections
listingsAndReviews

다음 예제에서는 create 명령을 사용하여 동적으로 생성된 데이터베이스에 대한 컬렉션을 동적으로 생성합니다.

use *
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "egAtlasStore" }]})
{ "ok" : 1 }

다음 명령은 컬렉션이 성공적으로 생성되었음을 보여줍니다.

db.runCommand({storageGetConfig:1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
}
],
"databases" : [
{
"name" : "*",
"collections" : [
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egAtlasStore"
}
]
}
]
}
]
}
}

와일드카드 "*" 컬렉션은 이 데이터 저장소에서 지원되지 않습니다.

다음 예제에서는 create 명령을 사용하여 온라인 아카이브에 대해 지정된 접두사 이름과 일치하는 이름의 컬렉션을 동적으로 생성합니다.

use sample
db.runCommand({ "create" : "*", "dataSources" : [{ "storeName" : "adlStore", "datasetPrefix": "v1$atlas$snapshot$testCluster$sample_airbnb$listingsAndReviews", "trimLevel": 4 }]})
{ ok: 1 }

다음 명령은 컬렉션이 성공적으로 생성되었음을 보여줍니다.

show collections
sample_airbnb_listingsAndReviews_20220602T124437Z
sample_airbnb_listingsAndReviews_20220603T124603Z
sample_airbnb_listingsAndReviews_20220604T124420Z
sample_airbnb_listingsAndReviews_20220605T124454Z
sample_airbnb_listingsAndReviews_20220606T124419Z
sample_airbnb_listingsAndReviews_20220607T124515Z

다음 명령은 스토리지 구성의 sampleDB 데이터베이스에 egCollection 라는 collection을 생성합니다. egCollection collection은 다음 샘플 데이터 세트에 매핑됩니다.

  • airbnb 이름이 egS3StoreS3 저장소의 json 폴더에 있는 데이터 세트

  • airbnb 이름이 myTestCluster인 Atlas 클러스터의 sample_airbnb.listingsAndReviews 컬렉션에 있는 데이터 세트

  • airbnb URL https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json의 데이터 세트

경고

AWS S3 버킷과 Azure Blob Storage 컨테이너 모두에 매핑되는 연합 데이터베이스 인스턴스는 생성할 수 없습니다. Atlas Data Federation은 다양한 클라우드 제공자 간의 연합 쿼리를 지원하지 않습니다.

use sampleDB
db.runCommand({ "create" : "egCollection", "dataSources" : [{ "storeName" : "egS3Store", "path" : "/json/airbnb" },{ "storeName" : "egAtlasStore", "database": "sample_airbnb", "collection": "listingsAndReviews" },{"storeName" : "egHttpStore", "urls": ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]}]})
{ "ok" : 1 }

다음 명령은 collection이 성공적으로 생성되었음을 보여줍니다.

show collections
egCollection
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/",
"prefix" : ""
},
{
"name" : "egAtlasStore",
"provider" : "atlas",
"clusterName" : "myTestCluster",
"projectId" : "<project-id>"
},
{
"name" : "egHttpStore",
"provider" : "http",
"urls" : ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]
}
],
"databases" : [
{
"name" : "sampleDB",
"collections" : [{
"name" : "egCollection",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/airbnb"
},
{
"storeName" : "egAtlasStore",
"database" : "sample_airbnb",
"collection" : "listingsAndReviews"
},
{
"storeName" : "egHttpStore",
"urls" : ["https://atlas-data-lake.s3.amazonaws.com/json/sample_airbnb/listingsAndReviews.json"]
}
]
}]
}
]
}
}

다음 명령은 nameproperty_type 필드가 있는 sample 데이터베이스의 airbnb 컬렉션에 listings 라는 뷰를 만듭니다.

use sampleDB
db.runCommand({ "create" : "listings", "viewOn" : "airbnb", "pipeline" : [{$project: {"property_type":1, "name": 1}}] })
{ "ok" : 1 }
use sampleDB
db.runCommand({ "create" : "listings", "pipeline": [{$sql: {statement: "SELECT property_type, name FROM airbnb"} }] })
{ "ok" : 1 }

listCollectionsstorageGetConfig 명령은 다음 출력을 반환합니다.

db.runCommand({"listCollections":1})
{
"ok" : 1,
"cursor" : {
"firstBatch" : [
{
"name" : "airbnb",
"type" : "collection",
"info" : {
"readOnly" : true
}
},
{
"name" : "listings",
"type" : "view",
"info" : {
"readOnly" : true
}
}
],
"id" : NumberLong(0),
"ns" : "egS3Store.$cmd.listCollections"
}
}
db.runCommand({"storageGetConfig":1})
{
"ok" : 1,
"storage" : {
"stores" : [
{
"name" : "egS3Store",
"provider" : "s3",
"region" : "us-east-2",
"bucket" : "test-data-federation",
"delimiter" : "/"
}
],
"databases" : [
{
"name" : "sample",
"collections" : [
{
"name" : "airbnb",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/airbnb/*"
}
]
},
{
"name" : "*",
"dataSources" : [
{
"storeName" : "egS3Store",
"path" : "json/{collectionName()}"
}
]
}
],
"views" : [
{
"name" : "listings",
"source" : "airbnb",
"pipeline" : "[{\"$project\":{\"property_type\":{\"$numberInt\":\"1\"},\"name{\"$numberInt\":\"1\"}}}]"
}
]
}
]
}
}

다음 명령 중 하나를 실행하여 해당 명령이 collection 또는 뷰를 성공적으로 생성했는지 확인할 수 있습니다.

show collections
db.runCommand({ "storageGetConfig" : 1 })
db.runCommand({ "listCollections" : 1 })

명령이 실패하면 다음 오류 중 하나를 반환합니다.

스토어 이름이 존재하지 않음

{
"ok" : 0,
"errmsg" : "store name does not exist",
"code" : 9,
"codeName" : "FailedToParse"
}

해결책: 지정된 storeName 이(가) stores 배열의 상점 이름과 일치하는지 확인하십시오. listStores 명령을 실행하여 연합 데이터베이스 인스턴스 스토리지 구성에서 매장 목록을 검색할 수 있습니다.

collection 이름이 이미 존재합니다.

{
"ok" : 0,
"errmsg" : "collection name already exists in the database",
"code" : 9,
"codeName" : "FailedToParse"
}

해결책: name collection이 고유한지 확인합니다. show collections 명령을 실행하여 기존 collection 목록을 검색할 수 있습니다.

명령이 실패하면 다음 오류가 반환됩니다.

뷰 이름 존재

{
"ok" : 0,
"errmsg" : "a view '<database>.<view>' already exists, correlationID = <1603aaffdbc91ba93de6364a>",
"code" : 48,
"codeName" : "NamespaceExists"
}

해결 방법: 보기 이름이 고유한지 확인합니다. listCollections 명령을 실행하여 컬렉션의 기존 뷰 목록을 검색할 수 있습니다.

돌아가기

스토어 목록