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과 매핑할 | 필수 사항 |
dataSources.storeName | 문자열 | 컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 | 필수 사항 |
dataSources.path | 문자열 | 필수 사항 | |
dataSources.defaultFormat | 문자열 | 연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.
이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다. | 옵션 |
dataSources.omitAttributes | 부울 | Atlas Data Federation이 컬렉션에 추가하는 속성(키 및 값 쌍)을 생략할지 여부를 지정하는 플래그입니다. 다음 값 중 하나를 지정할 수 있습니다.
생략하면 기본값은 | 옵션 |
매개 변수 | 유형 | 설명 | 필요성 |
---|---|---|---|
<collection-name>|* | 문자열 | Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름이거나 컬렉션을 동적으로 생성하기 위한 와일드카드 컬렉션 이름에 | 필수 사항 |
dataSources | 객체 | 각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 | 필수 사항 |
dataSources.storeName | 문자열 | 컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 | 필수 사항 |
dataSources.path | 문자열 | 필수 사항 | |
dataSources.defaultFormat | 문자열 | 연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.
이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다. | 옵션 |
dataSources.omitAttributes | 부울 | Atlas Data Federation이 컬렉션에 추가하는 속성(키 및 값 쌍)을 생략할지 여부를 지정하는 플래그입니다. 다음 값 중 하나를 지정할 수 있습니다.
생략하면 기본값은 | 옵션 |
매개 변수 | 유형 | 설명 | 필요성 |
---|---|---|---|
<collection-name>|* | 문자열 | Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름이거나 컬렉션을 동적으로 생성하기 위한 와일드카드 컬렉션 이름에 동적으로 생성된 데이터베이스의 경우 컬렉션 이름에
와일드카드( | 필수 사항 |
dataSources | 객체 | 각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 | 필수 사항 |
dataSources.storeName | 문자열 | 컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 | 필수 사항 |
dataSources.database | 문자열 | Atlas cluster의 컬렉션이 포함된 데이터베이스의 이름입니다. 동적으로 생성된 데이터베이스에 대한 와일드카드( * ) 컬렉션을 생성하려면 이 매개변수를 생략해야 합니다. | 조건부 |
dataSources.collection | 문자열 | Atlas 데이터베이스에 있는 컬렉션의 이름입니다. 와일드카드( * ) 컬렉션을 만들려면 이 매개변수를 생략해야 합니다. | 조건부 |
dataSources.collectionRegex | 문자열 | 와일드카드( ) 컬렉션을 만드는 데 사용할 정규식 와일드카드( | 옵션 |
매개 변수 | 유형 | 설명 | 필요성 |
---|---|---|---|
<collection-name> | 문자열 | Atlas Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름입니다. * 을(를) 지정하여 컬렉션 이름을 동적으로 생성할 수 없습니다. | 필수 사항 |
dataSources | 객체 | 각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 | 필수 사항 |
dataSources.storeName | 문자열 | 컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 | 필수 사항 |
dataSources.allowInsecure | 부울 | 지정된 URL의 체계의 유효성을 검사합니다. 값은 다음 중 하나일 수 있습니다.
true(참)인 경우 Atlas Data Federation:
경고: 이 값을 생략하는 경우 기본값은 | 옵션 |
dataSources.urls | 문자열 배열 또는 빈 배열 | 공개적으로 액세스할 수 있는 데이터 파일의 URL입니다. 인증이 필요한 URL은 지정할 수 없습니다. Atlas Data Federation은 각 URL 에 대한 파티션을 생성합니다. 비어 있거나 생략된 경우 Atlas Data Federation은 dataSources.storeName 매개변수에 지정된 저장소의 URL을 사용합니다. | 필수 사항 |
dataSources.defaultFormat | 문자열 | 연합 데이터베이스 인스턴스 저장소를 쿼리하는 동안 확장자가 없는 파일을 발견할 경우 Data Federation이 기본값으로 사용할 형식입니다. 유효한 값은 다음과 같습니다.
이를 생략할 경우 Data Federation은 일부 파일 바이트를 처리하여 파일 형식을 감지하려고 시도합니다. 포함된 경우 지정된 형식은 | 옵션 |
매개 변수 | 유형 | 설명 | 필요성 | |
---|---|---|---|---|
<collection-name> | 문자열 | Atlas Data Federation이 연합 데이터베이스 인스턴스 저장소에 포함된 데이터를 매핑하는 컬렉션의 이름입니다. 컬렉션 이름을 동적으로 생성하려면 다음을 수행해야 합니다.
| 필수 사항 | |
dataSources | 객체 | 각 객체가 연합 데이터베이스 인스턴스를 나타내는 객체 배열로, collection과 매핑할 컬렉션의 모든 | 필수 사항 | |
dataSources.storeName | 문자열 | 컬렉션에 매핑할 연합 데이터베이스 인스턴스 저장소의 이름입니다. 값은 | 필수 사항 | |
datasetName | 문자열 | 컬렉션과 매핑할 온라인 아카이브 데이터 세트의 이름입니다. 온라인 아카이브
와일드카드 컬렉션에는 | 조건부 | |
datasetPrefix | 문자열 | 와일드카드 컬렉션에만 필요합니다. 와일드카드가 아닌 컬렉션의 경우 선택 사항입니다. 온라인 아카이브 데이터 세트 이름과 일치시킬 데이터 세트 이름 접두사입니다. 와일드카드 컬렉션에 이 매개 변수를 지정하면 Atlas Data Federation은 접두사가 지정한 와일드카드가 아닌 컬렉션에 대해 이 매개 변수를 지정하면 Atlas Data Federation은 최신 데이터 세트(가장 최근에 캡처한 스냅샷의 경우)를 컬렉션에 매핑합니다. 와일드카드가 아닌 컬렉션에 대해 이 매개 변수를 지정하려면 | 조건부 | |
maxDatasets | int | 와일드카드 컬렉션에만 해당됩니다. 데이터 소스에 대한 컬렉션을 동적으로 생성할 데이터 세트의 최대 개수입니다. 값은 | 옵션 | |
trimLevel | int | 와일드카드 컬렉션에만 해당됩니다. 나머지 필드를 와일드카드 컬렉션 이름에 매핑하기 전에 데이터 세트 이름 왼쪽에서 잘라낼 문자 수입니다. 값은 와일드카드 컬렉션에 대해서만 이 설정을 지정할 수 있습니다. | 옵션 |
매개 변수 | 유형 | 설명 | 필요성 |
---|---|---|---|
<view-name> | 문자열 | 뷰 의 이름입니다. 뷰 이름은 고유 해야 합니다. 컬렉션 이름 또는 동일한 데이터베이스에 있는 다른 뷰 이름과 같을 수 없습니다. | 필수 사항 |
viewOn | 문자열 | 뷰를 만들 소스 컬렉션의 이름입니다. | 필수 사항 |
pipeline | 단계배열 | 뷰를 만드는 데 사용할 집계 파이프라인 단계 의 배열입니다. 뷰 정의 파이프라인은 $lookup 또는 $facet 과 같은 중첩된 파이프라인 단계 내부에서도 $out 또는 $merge 단계를 포함할 수 없습니다. | 필수 사항 |
출력
명령이 성공하면 다음 출력을 반환합니다. 컬렉션 검증 에서 명령을 실행하여 결과를 확인할 수 있습니다. 실패할 경우 아래의 오류 문제 해결 을 참조하여 권장 해결 방법을 확인하세요.
{ 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
컬렉션은 이름이 egS3Store
인 S3 저장소의 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
컬렉션은 이름이 egAzureStore
인 Azure 스토어의 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 클러스터 이름 myTestCluster
에 sample_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
이름이egS3Store
인 S3 저장소의json
폴더에 있는 데이터 세트airbnb
이름이myTestCluster
인 Atlas 클러스터의sample_airbnb.listingsAndReviews
컬렉션에 있는 데이터 세트airbnb
URLhttps://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"] } ] }] } ] } }
다음 명령은 name
및 property_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 }
listCollections
및 storageGetConfig
명령은 다음 출력을 반환합니다.
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
명령을 실행하여 컬렉션의 기존 뷰 목록을 검색할 수 있습니다.