Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

create

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 액세스 제어
  • 예시
create

컬렉션 또는 뷰를 명시적으로 만듭니다.

참고

이 명령으로 생성된 뷰는 구체화된 뷰를 참조하지 않습니다. 온디맨드 구체화된 뷰에 대한 설명은 $merge 를 대신 참조하세요.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원 에 대한 자세한 내용은 지원되지 않는 명령을 참조하세요.

create명령은 다음과 같은 구문을 가집니다:

참고

MongoDB 6.3에는 bucketMaxSpanSecondsbucketRoundingSeconds 매개변수가 추가되었습니다. 6.3 이하로 다운그레이드하려면 이러한 매개변수가 있는 모든 컬렉션을 제거하거나 가능한 경우 해당 granularity를 사용하도록 수정해야 합니다. 자세한 내용은 collMod을 참조하십시오.

db.runCommand(
{
create: <collection or view name>,
capped: <true|false>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>,
bucketMaxSpanSeconds: <timespan>, // Added in MongoDB 6.3
bucketRoundingSeconds: <timespan> // Added in MongoDB 6.3
},
expireAfterSeconds: <number>,
clusteredIndex: <document>, // Added in MongoDB 5.3
changeStreamPreAndPostImages: <document>, // Added in MongoDB 6.0
autoIndexId: <true|false>,
size: <max_size>,
max: <max_documents>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <source>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>,
encryptedFields: <document>,
comment: <any>
}

create 명령에는 다음과 같은 필드가 있습니다.

필드
유형
설명
create
문자열
새 컬렉션 또는 뷰의 이름입니다. 이름 지정 제한 사항을 참조하세요. 이미 존재하는 컬렉션이나 뷰를 만들려고 할 때 기존 컬렉션이나 뷰에 동일한 옵션을 제공하면 아무 조치도 취해지지 않고 성공이 반환됩니다.
capped
부울
선택 사항. 고정 사이즈 컬렉션을 생성하려면 true를 지정합니다. true를 지정하는 경우 size 필드에 최대 크기도 설정해야 합니다.
timeseries.timeField
문자열
time series 컬렉션을 만들 때 필요합니다. 각 time-series 문서에서 날짜를 포함하는 필드의 이름입니다. time series 컬렉션의 문서에는 timeField의 값으로 유효한 BSON 날짜가 있어야 합니다.
timeseries.metaField
문자열

선택 사항. 각 time series 문서에 메타데이터가 포함된 필드의 이름입니다. 지정된 필드의 메타데이터는 고유한 문서 시리즈에 레이블을 지정하는 데 사용되는 데이터여야 합니다. 메타데이터는 거의 변경되지 않아야 합니다. 지정된 필드의 이름은 _id이(가) 아니거나 timeseries.timeField 이름과 같지 않을 수 있습니다. 필드는 모든 데이터 유형이 가능합니다.

metaField 필드는 선택 사항이지만 메타데이터를 사용하면 쿼리 최적화를 개선할 수 있습니다. 예를 들어 MongoDB는 새 컬렉션에 대해 metaFieldtimeField 필드에 복합 인덱스를 자동으로 생성합니다 . 이 필드에 값을 제공하지 않으면 데이터는 시간을 기준으로만 버킷됩니다.

timeseries.granularity
문자열

선택사항. bucketRoundingSecondsbucketMaxSpanSeconds를 설정하는 경우 사용하지 마세요. 가능한 값은 seconds(기본값), minutes, hours입니다.

granularity를 연속적으로 들어오는 타임스탬프 사이의 시간과 가장 근접하게 일치하는 값으로 설정합니다. 이렇게 하면 MongoDB가 collection에 데이터를 내부적으로 저장하는 방식을 최적화하여 성능이 향상됩니다.

세분 수준 및 버킷 간격에 대한 자세한 내용은 Time Series 데이터의 세부 수준 설정을 참조하세요.

timeseries.bucketMaxSpanSeconds
integer

선택 사항. granularity 대신 bucketRoundingSeconds와 함께 사용됩니다. 같은 버킷에 있는 타임스탬프 사이의 최대 시간을 설정합니다. 가능한 값은 1-31536000입니다. bucketMaxSpanSeconds를 설정하는 경우 bucketRoundingSeconds를 동일한 값으로 설정해야 합니다.

MongoDB 6.3 이하로 다운그레이드하려면 해당 granularity 값을 사용하도록 컬렉션을 수정하거나 제거해야 합니다. 자세한 내용은 collMod 를 참조하세요.

timeseries.bucketRoundingSeconds
integer

선택 사항, granularity 대신 bucketMaxSpanSeconds과 함께 사용됩니다. MongoDB가 새 버킷에 대한 최소 타임스탬프를 설정할 때 반내림할 시간(초)을 설정합니다. bucketMaxSpanSeconds와 같아야 합니다.

예를 들어 두 매개변수를 모두 1800으로 설정하면 새 버킷이 가장 가까운 30분으로 반올림됩니다. 시간이 2023-03-27T18:24:35Z인 문서가 기존 버킷에 맞지 않는 경우, MongoDB는 최소 시간이 2023-03-27T18:00:00Z이고 최대 시간이 2023-03-27T18:30:00Z인 새 버킷을 생성합니다.

expireAfterSeconds
integer
선택 사항입니다. time series 컬렉션 또는 클러스터형 컬렉션의 문서가 만료되는 시간(초)을 지정합니다. MongoDB는 만료된 문서를 자동으로 삭제합니다.
clusteredIndex
문서

MongoDB 5.3부터 클러스터형 인덱스를 사용하여 컬렉션을 생성할 수 있습니다. 클러스터형 인덱스는 컬렉션과 동일한 WiredTiger 파일에 저장됩니다. 결과 컬렉션을 클러스터형 컬렉션이라고 합니다.

clusteredIndex 필드의 구문은 다음과 같습니다.

clusteredIndex: {
key: <object>,
unique: <boolean>,
name: <string>
}
key
필수 사항입니다. 클러스터형 인덱스 키 필드입니다. { _id: 1 }(으)로 설정해야 합니다. _id 필드의 기본값은 자동으로 생성된 고유 객체 식별자이지만, 클러스터형 인덱스 키 값을 직접 설정할 수 있습니다.
unique
필수입니다. true(으)로 설정해야 합니다. 고유 인덱스는 클러스터된 인덱스 키 값이 인덱스의 기존 값과 일치하는 경우 collection에서 삽입 또는 업데이트된 문서를 허용하지 않음을 나타냅니다.
name
선택 사항. 클러스터된 인덱스를 고유하게 식별하는 이름입니다.

버전 5.3에 추가.

changeStreamPreAndPostImages
문서

선택 사항.

MongoDB 6.0부터는 변경 스트림 이벤트를 사용하여 문서의 변경 전후 버전(문서의 전후 이미지)을 출력할 수 있습니다.

  • 사전 이미지는 문서가 교체, 업데이트 또는 삭제되기 전의 문서입니다. 삽입된 문서에는 사전 이미지가 없습니다.

  • 사후 이미지는 문서가 삽입, 교체, 업데이트된 후의 문서입니다. 삭제된 문서에 대한 사후 이미지가 없습니다.

  • db.createCollection(), create 또는 collMod를 사용하는 컬렉션에 대해 changeStreamPreAndPostImages를 활성화합니다.

changeStreamPreAndPostImages 의 구문은 다음과 같습니다:

changeStreamPreAndPostImages: {
enabled: <boolean>
}

컬렉션의 변경 스트림 사전 및 사후 이미지를 활성화하려면 enabledtrue로 설정합니다.

변경 스트림s 출력에 대한 전체 예시는 전후 이미지를 포함하는 문서의 변경 스트림s를 참조하세요.

이 페이지의 create 예시는 문서의 변경 스트림 사전 및 사후 이미지가 있는 컬렉션 만들기를 참조하세요.

버전 6.0에 추가.

size
integer
선택 사항. 고정 사이즈 컬렉션의 최대 크기를 바이트 단위로 지정합니다. 고정 사이즈 컬렉션이 최대 크기에 도달하면 MongoDB는 새 문서를 위한 공간을 확보하기 위해 이전 문서를 제거합니다. 고정 사이즈 컬렉션의 경우 size 필드는 필수이며 다른 컬렉션의 경우 무시됩니다.
max
integer
선택 사항입니다. 고정 사이즈 컬렉션에 허용되는 최대 문서 수입니다. size 제한이 이 제한보다 우선합니다. 고정 사이즈 컬렉션이 최대 문서 수에 도달하기 전에 size 제한에 도달하면 MongoDB는 오래된 문서를 제거합니다. max 제한을 사용하는 것을 선호하는 경우, 고정 사이즈 컬렉션에 필요한 size 제한이 최대 문서 수를 포함하기에 충분한지 확인합니다.
storageEngine
문서

선택 사항. WiredTiger 스토리지 엔진에서만 사용할 수 있습니다.

사용자가 컬렉션을 생성할 때 컬렉션별로 스토리지 엔진에 대한 구성을 지정할 수 있습니다. storageEngine 옵션의 값은 다음과 같은 형식이어야 합니다.

{ <storage-engine-name>: <options> }

collection을 생성할 때 지정한 스토리지 엔진 구성은 다른 스토리지 엔진을 사용하는 멤버가 있는 복제본 세트를 지원하기 위해 복제 중에 유효성을 검사하고 oplog에 기록합니다.

MongoDB 7.2부터는 db.createCollection() 을(를) 사용하여 컬렉션을 생성할 때 wiredTiger 스토리지 엔진 암호화 옵션을 지정할 수 없습니다. WiredTiger 스토리지 엔진에 대한 암호화를 구성하려면 미사용 데이터 암호화를 참조하세요 .

자세한 내용은 스토리지 엔진 옵션 지정을 참조하세요.

validator
문서

선택 사항. 사용자가 컬렉션에 대한 유효성 검사 규칙 또는 표현식을 지정할 수 있습니다.

validator 옵션은 유효성 검사 규칙 또는 표현식을 지정하는 문서를 사용합니다. $near, $nearSphere, $text, $where을(를) 제외하고 쿼리 연산자와 동일한 연산자를 사용하여 표현식을 지정할 수 있습니다.

  • 유효성 검사는 업데이트 및 삽입 중에 수행됩니다. 기존 문서는 수정될 때까지 유효성 검사를 거치지 않습니다.

  • admin, localconfig 데이터베이스의 컬렉션에는 유효성 검사기를 지정할 수 없습니다.

  • system.* 컬렉션에 대한 유효성 검사기를 지정할 수 없습니다.

validationLevel
문자열

선택 사항입니다. 업데이트 중에 MongoDB가 기존 문서에 유효성 검사 규칙을 얼마나 엄격하게 적용하는지 결정합니다.

"off"
삽입 또는 업데이트에 대한 유효성 검사가 없습니다.
"strict"
기본값 모든 삽입 및 모든 업데이트에 유효성 검사 규칙을 적용합니다.
"moderate"
기존의 유효한 문서에 대한 삽입 및 업데이트에 유효성 검사 규칙을 적용합니다. 기존의 유효하지 않은 문서에 대한 업데이트에는 규칙을 적용하지 마세요.
validationAction
문자열

선택 사항. 유효하지 않은 문서를 error로 처리할지, 아니면 유효하지 않은 문서를 삽입할 수 있도록 허용하되 위반 사항에 대해 warn으로 처리할지 여부를 결정합니다.

문서 유효성 검사는 validationLevel에 의해 결정된 문서에만 적용됩니다.

"error"
기본값 문서는 쓰기가 발생하기 전에 유효성 검사를 통과해야 합니다. 이를 통과하지 못하면 쓰기 작업이 실패합니다.
"warn"
문서가 유효성 검사를 통과할 필요는 없습니다. 문서가 유효성 검사에 실패하면 쓰기 작업은 유효성 검사 실패를 기록합니다.
indexOptionDefaults
문서

선택 사항. 사용자가 컬렉션을 생성할 때 인덱스에 대한 기본 구성을 지정할 수 있습니다.

indexOptionDefaults 옵션은 storageEngine 문서를 허용하며, 그 형식은 다음과 같아야 합니다.

{ <storage-engine-name>: <options> }

인덱스를 만들 때 지정한 스토리지 엔진 구성은 다른 스토리지 엔진을 사용하는 멤버가 있는 복제본 세트를 지원하기 위해 복제 중에 유효성이 검사되고 oplog에 기록됩니다.

viewOn
문자열

뷰를 생성할 소스 컬렉션 또는 뷰의 이름입니다. 이 이름은 컬렉션 또는 뷰의 전체 네임스페이스가 아니며, 즉 데이터베이스 이름을 포함하지 않고 만들려는 뷰와 동일한 데이터베이스를 의미합니다. 소스 컬렉션과 동일한 데이터베이스에 뷰를 생성해야 합니다.

db.createView()도 참조하세요.

pipeline
배열

집계 파이프라인 단계로 구성된 배열입니다. create는 지정된 pipelineviewOn 컬렉션 또는 뷰에 적용하여 뷰를 생성합니다.

보기 정의 pipeline에는 $out 또는 $merge 단계를 포함할 수 없습니다. 이 제한은 $lookup 단계 또는 $facet 단계에서 사용되는 파이프라인과 같은 임베디드 파이프라인에도 적용됩니다.

뷰 정의는 공개입니다. 즉, 뷰에 대한 db.getCollectionInfos()explain 작업에는 뷰를 정의하는 파이프라인이 포함됩니다. 따라서 뷰 정의에 민감한 필드와 값을 직접 참조하지 않는 것이 좋습니다.

db.createView()도 참조하세요.

collation

컬렉션 또는 뷰의 기본 데이터 정렬을 지정합니다.

데이터 정렬을 사용하면 대소문자 및 악센트 표시 규칙과 같은 문자열 비교에 대한 언어별 규칙을 지정할 수 있습니다.

데이터 정렬 옵션의 구문은 다음과 같습니다:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

데이터 정렬을 지정할 때 locale 필드는 필수이고, 다른 데이터 정렬 필드는 모두 선택 사항입니다. 필드에 대한 설명은 데이터 정렬 문서를 참조하세요.

컬렉션 수준에서 데이터 정렬을 지정하는 경우:

  • 인덱스 생성 작업에서 명시적으로 다른 데이터 정렬을 지정하지 않는 한 해당 컬렉션의 인덱스는 해당 데이터 정렬로 생성됩니다.

  • 해당 컬렉션에 대한 작업은 명시적으로 다른 데이터 정렬을 지정하지 않으면 컬렉션의 기본 데이터 정렬을 사용합니다.

    한 연산에 대해 여러 데이터 정렬을 지정할 수 없습니다. 예를 들어 필드별로 서로 다른 데이터 정렬을 지정할 수 없으며 정렬과 함께 찾기를 수행하는 경우 찾기 와 정렬에서 각각 다른 데이터 정렬을 사용하는 것은 허용되지 않습니다.

컬렉션 또는 연산에 대한 데이터 정렬이 지정되지 않은 경우, MongoDB는 이전 버전에서 문자열 비교에 사용된 간단한 이진 비교를 사용합니다.

뷰의 경우 데이터 정렬이 지정되지 않았으면 뷰의 기본 데이터 정렬은 "simple" 이진 비교 데이터 정렬기입니다. 컬렉션에 대한 뷰의 경우, 뷰는 컬렉션의 데이터 정렬 설정을 상속하지 않습니다. 다른 뷰에 대한 뷰의 경우 만들려는 뷰에 동일한 데이터 정렬 설정을 지정해야 합니다.

컬렉션 또는 뷰를 만든 후에는 기본 데이터 정렬을 업데이트할 수 없습니다.

컬렉션 생성 시 기본 데이터 정렬을 지정하는 예시는 데이터 정렬 지정을 참조합니다.

writeConcern
문서

선택 사항입니다. 작업에 대한 쓰기 고려를 표현하는 문서입니다. 기본값 쓰기 고려를 사용하려면 생략합니다.

샤딩된 클러스터에서 실행하는 경우 mongoscreate쓰기 고려 및 해당 헬퍼 db.createCollection()"majority"로 변환합니다.

encryptedFields
문서

선택 사항입니다. 생성 중인 컬렉션에 대해 쿼리 가능한 암호화를 구성하는 문서입니다.

컬렉션에서 암호화된 필드를 사용하려면 새 구성 옵션을 지정합니다. 이 구성을 만들거나 편집하려면 컬렉션을 생성하고 수정할 수 있는 권한이 있어야 합니다.

구성에는 필드 목록과 해당 키 식별자, 유형 및 지원되는 쿼리가 포함됩니다.

encryptedFieldsConfig = {
"fields": [
{
"keyId": UUID, // required
"path": String, // path to field, required
"bsonType": "string" | "int" ..., // required
"queries": // optional
[
{ "queryType": "equality" },
]
}
],
"queryPatterns": [ // optional
{"fieldName": queryType, "fieldName": queryType, … }
]
}

자세한 내용은 튜토리얼을 참조하세요.

comment
any

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

db.createCollection() 메서드와 db.createView() 메서드는 create 명령을 래핑합니다.

create 의 동작은 다음과 같습니다.

create은 작업 기간에 지정된 컬렉션 또는 뷰에 대한 배타적 잠금을 얻습니다. 컬렉션에 이루어진 모든 후속 작업은 반드시 create이 잠금을 해제할 때까지 기다려야 합니다. create은 일반적으로 이 잠금을 짧은 시간 동안 유지합니다.

뷰를 만들려면 데이터베이스의 system.views 컬렉션에 대한 추가 배타 락을 얻어야 합니다. 이 잠금은 명령이 완료될 때까지 데이터베이스의 뷰 생성 또는 수정을 차단합니다.

트랜잭션이 교차 샤드 쓰기 트랜잭션(write transaction)인 아닌 경우 분산 트랜잭션 내에서 컬렉션과 인덱스를 생성할 수 있습니다.

트랜잭션에서 create을 사용하려면 트랜잭션에서 읽기 고려 "local"를 사용해야 합니다. "local" 이외의 읽기 고려수준을 지정하면 트랜잭션이 실패합니다.

다음도 참조하세요.

기존 collection 또는 뷰와 동일한 이름 및 옵션으로 create 를 실행하면 create 가 성공을 반환합니다.

버전 5.0에서 변경됨

Stable API V1을 사용하는 경우 create 명령에 다음 필드를 지정할 수 없습니다:

  • autoIndexId

  • capped

  • indexOptionDefaults

  • max

  • size

  • storageEngine

배포서버에서 인증/권한 부여를 시행하는 경우 create에 다음 권한이 필요합니다.

작업
필수 권한
비고정 사이즈 컬렉션 생성하기

데이터베이스의 createCollection 또는

insert 생성할 컬렉션

convertToCapped collection의 경우

createCollection 데이터베이스에서

만들기

createCollection 데이터베이스에서

그러나 사용자에게 데이터베이스에 대한 createCollection이(가) 있고 만들 뷰에 대한 find 이(가) 있는 경우 사용자에게 다음과 같은 추가 권한 있어야 합니다.

  • find 소스 컬렉션 또는 뷰에서입니다.

  • pipeline에서 참조된 다른 컬렉션 또는 뷰의 find(있는 경우)

이 데이터베이스에 대해 readWrite 기본 제공 역할이 있는 사용자에게는 나열된 연산을 실행하는 데 필요한 권한이 있습니다. 필요한 역할이 있는 사용자 생성을 실행하거나 기존 사용자에게 역할 허용을 실행하세요.

64킬로바이트로 제한된 고정 사이즈 컬렉션을 만들려면 다음 형식의 명령을 실행하세요.

db.runCommand( { create: "collection", capped: true, size: 64 * 1024 } )

지난 24시간 동안의 날씨 데이터를 캡처하는 time series 컬렉션을 생성하려면 다음 명령을 실행합니다.

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "data",
granularity: "hours"
},
expireAfterSeconds: 86400
}
)

또는 동일한 컬렉션을 생성하되 각 버킷을 동일한 시간 내의 타임스탬프 값으로 제한하려면 다음 명령을 실행합니다.

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "data",
bucketMaxSpanSeconds: "3600",
bucketRoundingSeconds: "3600"
},
expireAfterSeconds: 86400
}
)

참고

이 예시에서는 expireAfterSeconds86400 으로 지정했는데, 이는 문서가 timestamp 값 이후 86400초 후에 만료된다는 의미입니다. Time Series Collections (TTL) 자동 제거 설정을 참조하세요.

다음 create 예시에서는 products라고 명명된 클러스터형 컬렉션 을 추가합니다.

db.runCommand( {
create: "products",
clusteredIndex: { "key": { _id: 1 }, "unique": true, "name": "products clustered key" }
} )

다음 예시에서는 clusteredIndex이(가) 지정됩니다.

  • "key": { _id: 1 }, _id 필드에 클러스터형 인덱스 키 값이 설정됩니다.

  • "unique": true, 클러스터형 인덱스 키 값이 고유해야 함을 표시합니다.

  • "name": "products clustered key", 클러스터형 인덱스 이름을 설정합니다.

MongoDB 6.0부터는 변경 스트림 이벤트를 사용하여 문서의 변경 전후 버전(문서의 전후 이미지)을 출력할 수 있습니다.

  • 사전 이미지는 문서가 교체, 업데이트 또는 삭제되기 전의 문서입니다. 삽입된 문서에는 사전 이미지가 없습니다.

  • 사후 이미지는 문서가 삽입, 교체, 업데이트된 후의 문서입니다. 삭제된 문서에 대한 사후 이미지가 없습니다.

  • db.createCollection(), create 또는 collMod를 사용하는 컬렉션에 대해 changeStreamPreAndPostImages를 활성화합니다.

다음 예시에서는 changeStreamPreAndPostImages가 활성화된 collection을 생성합니다.

db.runCommand( {
create: "temperatureSensor",
changeStreamPreAndPostImages: { enabled: true }
} )

이미지가 다음과 같은 경우 변경 스트림 이벤트에 사전 및 사후 이미지를 사용할 수 없습니다.

  • 문서 업데이트 또는 삭제 작업 시 collection에서 활성화되지 않았습니다.

  • expireAfterSeconds에서 전후 이미지 보존 시간 설정 이후에 제거됩니다.

    • 다음 예시에서는 전체 클러스터에서 expireAfterSeconds100초로 설정합니다.

      use admin
      db.runCommand( {
      setClusterParameter:
      { changeStreamOptions: {
      preAndPostImages: { expireAfterSeconds: 100 }
      } }
      } )
    • 다음 예시에서는 expireAfterSeconds 등 현재 changeStreamOptions 설정을 반환합니다.

      db.adminCommand( { getClusterParameter: "changeStreamOptions" } )
    • expireAfterSecondsoff로 설정하면 기본 보존 정책이 사용되며, 해당 변경 스트림 이벤트가 oplog에서 제거될 때까지 사전 및 사후 이미지가 보존됩니다.

    • 변경 스트림 이벤트가 oplog에서 제거되면 expireAfterSeconds 사전 및 사후 이미지 보존 시간에 관계없이 해당 사전 및 사후 이미지도 삭제됩니다.

추가 고려 사항

  • 전후 이미지를 활성화하면 저장 공간이 소모되고 처리 시간이 늘어납니다. 필요한 경우에만 전후 이미지를 활성화하세요.

  • 변경 스트림 이벤트 크기를 16메가바이트 미만으로 제한합니다. 이벤트 크기를 제한하려면 다음을 수행하면 됩니다.

    • 문서 크기를 8메가바이트로 제한합니다. updateDescription과 같은 다른 변경 스트림 이벤트 필드가 크지 않은 경우 변경 스트림 출력에서 사전 및 사후 이미지를 동시에 요청할 수 있습니다.

    • updateDescription과 같은 다른 변경 스트림 이벤트 필드가 크지 않은 경우 최대 16메가바이트 문서에 대해 변경 스트림 출력에서 사후 이미지만 요청합니다.

    • 다음과 같은 경우 최대 16메가바이트의 문서에 대해 변경 스트림 출력에서 사전 이미지만 요청합니다.

      • 문서 업데이트가 문서 구조나 내용의 작은 부분에만 영향을 미칩니다. 그리고

      • replace 변경 이벤트를 발생시키지 않습니다. replace 이벤트에는 항상 후이미지가 포함됩니다.

  • 사전 이미지를 요청하려면 db.collection.watch()에서 fullDocumentBeforeChangerequired 또는 whenAvailable로 설정합니다. 사후 이미지를 요청하려면 동일한 방법으로 fullDocument를 설정합니다.

  • 사전 이미지가 config.system.preimages 컬렉션에 기록됩니다.

    • config.system.preimages collection은 커질 수 있습니다. collection 크기를 제한하려면 앞서 표시된 대로 사전 이미지에 대해 expireAfterSeconds 시간을 설정할 수 있습니다.

    • 사전 이미지는 백그라운드 프로세스가 비동기적으로 제거합니다.

중요

이전 버전과 호환되지 않는 기능

MongoDB 6.0부터는 변경 스트림에 문서 사전 및 사후 이미지를 사용하는 경우 이전 MongoDB 버전으로 다운그레이드하기 전에 collMod 명령을 사용하여 각 collection에 대해 changeStreamPreAndPostImages를 비활성화해야 합니다.

다음도 참조하세요.

참고

이 명령으로 생성된 뷰는 구체화된 뷰를 참조하지 않습니다. 온디맨드 구체화된 뷰에 대한 설명은 $merge를 참조하세요.

보기 정의 pipeline에는 $out 또는 $merge 단계를 포함할 수 없습니다. 이 제한은 $lookup 단계 또는 $facet 단계에서 사용되는 파이프라인과 같은 임베디드 파이프라인에도 적용됩니다.

create 명령을 사용하여 를 만들려면 다음 구문을 사용합니다.

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline> } )

또는 데이터 정렬을 지정하는 경우:

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )

예를 들어, 다음 문서를 사용하여 survey 컬렉션을 만듭니다.

db.survey.insertMany(
[
{ _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" },
{ _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" },
{ _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" }
]
)

다음 작업은 _id, feedback.managementdepartment 필드가 있는 managementRatings 뷰를 만듭니다:

db.runCommand ( {
create: "managementFeedback",
viewOn: "survey",
pipeline: [ { $project: { "management": "$feedback.management", department: 1 } } ]
} )

중요

뷰 정의는 공개입니다. 즉, 뷰에 대한 db.getCollectionInfos()explain 작업에는 뷰를 정의하는 파이프라인이 포함됩니다. 따라서 뷰 정의에 민감한 필드와 값을 직접 참조하지 않는 것이 좋습니다.

다음도 참조하세요.

데이터 정렬은 collection 또는 보기 수준에서 지정할 수 있습니다. 예를 들어 다음 연산은 collection에 대한 데이터 정렬을 지정하여 collection을 만듭니다(데이터 정렬 필드에 대한 설명은 데이터 정렬 문서 참조).

db.runCommand ( {
create: "myColl",
collation: { locale: "fr" }
});

이 데이터 정렬은 다른 데이터 정렬을 명시적으로 지정하지 않는 한 데이터 정렬을 지원하는 인덱스 및 작업에서 사용됩니다. 예를 들어 myColl에 다음 문서를 삽입합니다.

{ _id: 1, category: "café" }
{ _id: 2, category: "cafe" }
{ _id: 3, category: "cafE" }

다음 작업은 컬렉션의 데이터 정렬을 사용합니다.

db.myColl.find().sort( { category: 1 } )

이 작업은 다음 순서로 문서를 반환합니다.

{ "_id" : 2, "category" : "cafe" }
{ "_id" : 3, "category" : "cafE" }
{ "_id" : 1, "category" : "café" }

단순 이진 데이터 정렬을 사용하는 collection에 대한 동일한 작업(즉, 특정 데이터 정렬 세트 없음)은 다음 순서로 문서를 반환합니다.

{ "_id" : 3, "category" : "cafE" }
{ "_id" : 2, "category" : "cafe" }
{ "_id" : 1, "category" : "café" }

db.createCollection()을(를) 사용하여 컬렉션을 생성할 때 컬렉션별 스토리지 엔진 구성 옵션을 지정할 수 있습니다. 다음 작업을 고려하세요:

db.runCommand( {
create: "users",
storageEngine: { wiredTiger: { configString: "<option>=<setting>" } }
} )

이 작업은 MongoDB가 wiredTiger 스토리지 엔진에 전달할 특정 구성 문자열을 사용하여 users라는 새 컬렉션을 생성합니다. 특정 wiredTiger 옵션에 대해서는 컬렉션 수준 옵션에 대한 WiredTiger 설명서를 참조하세요.

MongoDB 7.2부터는 db.createCollection() 을(를) 사용하여 컬렉션을 생성할 때 wiredTiger 스토리지 엔진 암호화 옵션을 지정할 수 없습니다. WiredTiger 스토리지 엔진에 대한 암호화를 구성하려면 미사용 데이터 암호화를 참조하세요 .

돌아가기

convertToCapped (영문)