Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

MongoDB 6.0의 호환성 변경 사항

이 페이지의 내용

  • 집계
  • 변경 스트림
  • Indexes
  • 레거시 mongo 셸 제거
  • 플랫폼 지원
  • 정규 표현식
  • 제거된 연산자
  • 제거된 옵션
  • 제거된 매개변수
  • 매개 변수 이름 변경
  • TTL expireAfterSecondsNaN으로 설정된 경우 동작
  • 복제본 세트
  • 보안
  • Time Series 컬렉션
  • 일반 변경 사항
  • 다운그레이드 고려 사항

이 페이지에서는 MongoDB 이전 버전과의 호환성에 영향을 줄 수 있는 MongoDB 6.0에 도입된 변경 사항에 대해 설명합니다.

MongoDB 6.0은 주요 릴리스입니다. 따라서 MongoDB Atlas와 온프레미스 배포에서 지원됩니다. MongoDB 6.0에는 MongoDB Rapid Release 5.1, 5.2, 5.3에 도입된 변경 사항이 포함됩니다. 이 페이지에서는 이러한 Rapid Release와 MongoDB 6.0에 도입된 호환성 변경 사항을 설명합니다.

Major 릴리스와 Rapid Release의 차이점에 학습 보려면 MongoDB 버전 관리를 참조하세요.

MongoDB 6.0부터 실행에 100 메가바이트 이상의 메모리가 필요한 파이프라인 단계에서 기본적으로 임시 파일을 디스크에 씁니다. 이러한 임시 파일은 파이프라인 실행 기간 동안 지속되며 인스턴스의 스토리지 공간에 영향을 줄 수 있습니다. MongoDB의 이전 버전에서는 이 동작을 활성화하려면 개별 findaggregate 명령에 { allowDiskUse: true }을 전달해야 합니다.

개별 findaggregate 명령은 다음 방법 중 하나를 통해 allowDiskUseByDefault 매개변수를 재정의할 수 있습니다:

  • 1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 허용합니다.{ allowDiskUse: true } allowDiskUseByDefault false

  • 1}이 로 설정된 경우 을 사용하여 임시 파일을 디스크에 쓰는 것을 금지합니다.{ allowDiskUse: false } allowDiskUseByDefault true

MongoDB 6.0 부터 Atlas Search $$SEARCH_META 애그리게이션 변수는 모든 파이프라인의 $search 단계 이후 어느 곳에서나 사용할 수 있지만 모든 파이프라인의 $lookup 또는 $unionWith 단계 이후에는 사용할 수 없습니다. . $$SEARCH_META 애그리게이션 변수는 $searchMeta 단계 이후의 어떤 단계에서도 사용할 수 없습니다.

MongoDB 5.3부터는 범위 마이그레이션 중에 고아 문서의 업데이트에 대한 변경 스트림 이벤트가 생성되지 않습니다.

MongoDB 6.0부터는 가능한 경우, 이전 릴리스보다 더 이른 변경 스트림에 매치 필터를 적용합니다. 이렇게 하면 성능이 향상됩니다. 그러나 필터가 좁게 정의된 경우, 이전 버전에서 성공한 작업이 6.0에서는 실패할 수 있습니다.

MongoDB 6.0부터 "*"dropIndexes 또는 db.collection.dropIndexes()로 전달하면 _id 인덱스와 마지막 남은 샤드 키 인덱스(존재하는 경우)를 제외한 모든 인덱스가 제거됩니다. 마지막 남은 샤드 키 인덱스를 명시적으로 제거하려고 시도하면 오류가 발생합니다.

MongoDB 5.2부터는 인덱스 빌드가 진행 중이더라도 dropIndexes 또는 db.collection.dropIndexes()를 사용하여 동일한 컬렉션에 있는 기존 인덱스를 제거할 수 있습니다. 이전 버전에서는 인덱스 빌드가 진행 중일 때 다른 인덱스를 제거하려고 하면 BackgroundOperationInProgressForNamespace 오류가 발생했습니다.

메모리 부족 오류를 방지하기 위해 indexMaxNumGeneratedKeysPerDocument는 단일 문서에서 생성되는 2dsphere 인덱스 키의 최대 수를 제한합니다.

indexMaxNumGeneratedKeysPerDocument참조하십시오.

MongoDB 6.0부터 고유 인덱스 키 형식에 대한 변경 사항이 도입되었습니다. MongoDB 6.0에서 고유 인덱스를 생성하면, 해당 인덱스는 MongoDB 5.3.2 이전 버전 또는 5.0.7 버전에서는 작동하지 않습니다.

mongo shell이 MongoDB 6.0에서 제거되었습니다. 대체품은 mongosh입니다.

MongoDB 5.1.2부터는 다음 플랫폼이 지원되지 않습니다.

  • RHEL -72-s390x

MongoDB 5.1부터 잘못된 $regex options 옵션은 더 이상 무시되지 않습니다. 이 변경으로 $regex optionsaggregate 명령 및 투영 쿼리에서 $regex을 사용하는 것과 더 일관성이 있습니다.

MongoDB 5.1부터 컬렉션에 잘못된 을 포함하는 스키마 유효성 검사 $regex options 규칙이 있는 경우 서버가 이를 무시합니다.

  • 잘못된 정규식 패턴이 포함된 스키마 유효성 검사 규칙을 collMod 명령으로 수정할 때까지 모든 삽입 및 업데이트 작업을 방지합니다.

  • mongod 로그 파일에 경고 오류를 기록합니다.

MongoDB 5.1부터는 이러한 레거시 쿼리 연산자가 제거됩니다.

제거된 연산자
대안
$comment
설명
$hint
$max
$maxTimeMS
$min
orderby
쿼리
커서 방법을 참조하세요.
$returnKey
$showDiskLoc
db.getLastError()
db.getLastErrorObj()
getLastError

MongoDB 6.0에서는 --cpu mongod 옵션이 제거됩니다.

MongoDB 6.0에서는 다음의 서버 매개 변수가 제거됩니다.

제거된 매개 변수
설명

이 옵션은 MongoDB Community Edition에서 제거되었습니다. MongoDB Enterprise 에디션에서는 이 옵션을 사용할 수 있습니다.

FIPS는 MongoDB Community Edition에서 지원되지 않는 기능입니다. 어쨌든 설치에서 FIPS를 사용했다면 업그레이드하기 전에 TLS/SSL 연결을 다시 구성해야 합니다.

MongoDB 6.0부터 다음 매개 변수의 이름이 변경되었습니다.

TTL expireAfterSecondsNaN으로 설정하면 MongoDB 4.4에서 MongoDB 6.0으로 동작이 변경됩니다. 이는 MongoDB 4.4 이하 버전의 초기 동기화와 MongoDB 4.4 이하 버전의 mongorestore에 영향을 줍니다. 이러한 조치를 수행하면 NaNexpireAfterSeconds0expireAfterSeconds로 처리됩니다. 그 결과, 문서가 즉시 만료될 수 있습니다.

MongoDB 5.1부터 사용하여 샤드 서버를 시작, 다시 시작하거나 sh.addShard() 추가할 때 CWWC(Cluster Wide Write Concern) 를 설정해야 합니다.

0}이 CWWC 설정되어 있지 않고 기본 쓰기 우려 사항이 이 되도록 샤드가 구성된 { w : 1 } 경우, 샤드 서버는 시작 또는 추가에 실패하고 오류를 반환합니다.

기본 쓰기 관심사 계산 방법에 대한 자세한 내용은 기본 쓰기 관심사 계산을 참조하세요.

MongoDB 5.1부터는 새 복제본 세트 멤버의 기본 쓰기 우려를 변경하는 reconfigs 를 발행하기 전에 클러스터 전체 쓰기 우려(CWWC) 를 설정해야 합니다.

MongoDB 5.3부터는 SCRAM-SHA-1을 클러스터 내 인증에 사용할 수 없습니다. SCRAM-SHA-256만 지원됩니다.

이전 MongoDB 버전에서는 SCRAM이 명시적으로 활성화되어 있지 않더라도 SCRAM-SHA-1과 SCRAM-SHA-256을 모두 클러스터 내 인증에 사용할 수 있습니다.

MongoDB 5.1부터 FIPS 모드에서 실행되는 인스턴스는 기본적으로 SCRAM-SHA-1 인증 메커니즘이 비활성화되어 있습니다. setParameter.authenticationMechanisms 을 사용하여 SCRAM-SHA-1 인증 메커니즘을 활성화할 수 있습니다. 명령을 사용합니다.

이 변경 사항은 MongoDB setFeatureCompatibilityVersion 대상으로 하는 드라이버에는 영향을 미치지 않습니다. 4.0+.

MongoDB 6.0부터는 초기 동기화 중에 ocspEnabledtrue로 설정된 경우 모든 노드가 OCSP 응답자에 도달할 수 있어야 합니다.

STARTUP2 상태에서 노드가 실패하면 tlsOCSPVerifyTimeoutSecs5보다 작은 값으로 설정합니다.

경고

MongoDB 5.1 이상에서 샤딩된 시계열 컬렉션을 만드는 경우, MongoDB 5.0.4 이전 버전으로 다운그레이드하면 데이터가 손실될 수 있습니다.

5.0.4 이전 버전으로 다운그레이드하기 전에 샤딩된 모든 Time Series 컬렉션을 제거하세요.

Time Series 컬렉션에 세컨더리 인덱스가 있고 기능 호환성 버전(FCV)을 다운그레이드해야 하는 경우, 먼저 다운그레이드된 FCV와 호환되지 않는 보조 인덱스를 모두 삭제해야 합니다. 자세한 내용은 setFeatureCompatibilityVersion을 참조하세요.

더 이상 사용되지 않습니다.
설명
db.collection.reIndex() 메서드는 MongoDB v6.0에서 더 이상 사용되지 않습니다.
reIndex 명령은 MongoDB v6.0에서 더 이상 사용되지 않습니다.
단순 네트워크 관리 프로토콜(SNMP)

MongoDB 6.0부터 SNMP는 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다. 배포서버를 모니터링하려면 MongoDB Ops Manager를 사용하세요.

MongoDB 5.1 (및 5.0.4)부터, $mod 연산자는 divisor 또는 remainder 값이 특정 값으로 평가되는 경우 오류를 반환합니다. $mod 동작을 참조하세요.

MongoDB 6.0에서는 다음과 같은 레거시 옵코드와 데이터베이스 명령에 대한 지원이 중단되었습니다.

경고

드라이버 업그레이드

이러한 옵코드의 제거로 인한 중단을 방지하려면 드라이버를 최신 버전으로 업그레이드하세요.

MongoDB 5.1 이상의 mongo 셸을 사용해 MongoDB 3.4 이하 버전의 mongod 인스턴스에 연결을 시도하면 다음과 같은 오류 메시지가 표시됩니다.

Connection handshake failed. Is your mongod 3.4 or older?
:: caused by :: network error while attempting to run command
'isMaster' on host '127.0.0.1:27017'

MongoDB 3.6부터 MongoDB 드라이버는 OP_QUERY와 기타 레거시 옵코드 및 명령 대신 OP_MSG를 사용하고 있습니다.

MongoDB 6.0부터:

참고

OP_QUERY RPC 명령

OP_QUERY RPC 프로토콜은 다음 명령과 함께 사용할 수 있습니다.

  • _isSelf

  • authenticate

  • buildinfo

  • buildInfo

  • hello

  • ismaster

  • isMaster

  • saslContinue

  • saslStart

OP_QUERY로 실행하면 다른 모든 명령이 거부됩니다.

MongoDB 6.0에서는 서버 측 JavaScript, $accumulator, $function, $where 표현식에 사용되는 내부 JavaScript 엔진이 MozJS-60에서 MozJS-91로 업그레이드되었습니다. MozJS-91에서는 MozJS-60에 존재했던 사용 중단된 몇 가지 비표준 배열과 문자열 함수가 제거되었습니다.

제거된 배열과 문자열 함수의 전체 목록은 이 페이지 다음 섹션을 참조하세요.

참고

정적 함수만 제거

정적 JavaScript 함수만 제거됩니다. 제거된 함수에 해당하는 프로토타입 함수는 계속 사용할 수 있습니다.

예를 들면 다음과 같습니다.

  • Array.concat(<array1>, <array2>) 는 정적 함수이며, 더 이상 MongoDB 6.0에서 실행되지 않습니다.

  • <array1>.concat(<array2>) 프로토타입 함수이며, MongoDB 6.0에서 여전히 실행됩니다.

이 동작은 제거된 배열과 제거된 문자열 함수 모두에 적용됩니다.

MongoDB 6.0부터는 다음과 같은 배열 함수가 제거되어 서버 측 JavaScript에서 $accumulator, $function$where 표현식과 함께 사용할 수 없습니다.

  • Array.concat

  • Array.every

  • Array.filter

  • Array.forEach

  • Array.indexOf

  • Array.join

  • Array.lastIndexOf

  • Array.map

  • Array.pop

  • Array.push

  • Array.reduce

  • Array.reduceRight

  • Array.reverse

  • Array.shift

  • Array.slice

  • Array.some

  • Array.sort

  • Array.splice

  • Array.unshift

MongoDB 6.0부터는 다음과 같은 배열 함수가 제거되어 서버 측 JavaScript에서 $accumulator, $function$where 표현식과 함께 사용할 수 없습니다.

  • String.charAt

  • String.charCodeAt

  • String.concat

  • String.contains

  • String.endsWith

  • String.includes

  • String.indexOf

  • String.lastIndexOf

  • String.localeCompare

  • String.match

  • String.normalize

  • String.replace

  • String.search

  • String.slice

  • String.split

  • String.startsWith

  • String.substr

  • String.substring

  • String.toLocaleLowerCase

  • String.toLocaleUpperCase

  • String.toLowerCase

  • String.toUpperCase

  • String.trim

  • String.trimLeft

  • String.trimRight

MongoDB 6.0부터는 freeStorage 매개 변수가 1로 설정된 경우에만 dbStats 명령과 db.stats() 메서드가 컬렉션에 할당된 여유 공간을 보고합니다.

MongoDB 6.0부터 인덱스 필터는 이전에 명령을 planCacheSetFilter 사용하여 설정한 데이터 정렬을 사용합니다.

MongoDB 8.0 부터는 인덱스 필터 를 추가하는 대신 쿼리 설정을 사용합니다. 인덱스 필터는 MongoDB 8.0 부터 더 이상 사용되지 않습니다.

쿼리 설정에는 인덱스 필터보다 더 많은 기능이 있습니다. 또한 인덱스 필터는 영구적이지 않으며 모든 클러스터 노드에 대한 인덱스 필터를 쉽게 만들 수 없습니다. 쿼리 설정을 추가하고 예제를 탐색하려면 setQuerySettings 를 참조하세요.

MongoDB 6.0부터는 배열을 사용할 때 distinct 명령이 컬렉션과 보기 화면에 동일한 결과를 반환합니다.

컬렉션과 보기 화면 내 배열을 참조하세요.

다음 섹션에서는 배포에서 이전 버전과 호환되지 않는 기능을 제거하는 방법을 설명합니다. MongoDB 6.0에서 이전 버전으로 다운그레이드하는 경우, 아래 섹션에서 다운그레이드 이후 배포가 성공적으로 실행되도록 하는 방법을 살펴보세요.

MongoDB 5.3부터는 클러스터형 컬렉션을 사용하는 경우 해당 컬렉션을 제거해야만 이전 MongoDB 버전으로 다운그레이드할 수 있습니다.

MongoDB 6.0부터는 기능 호환성 버전을 다운그레이드해야 하는 경우 cluster 간 복제 및 사용자 쓰기 차단을 비활성화해야 합니다.

Cluster-to-Cluster Sync와 사용자 쓰기 차단을 참조하세요.

다운그레이드하기 전에 시계열 컬렉션을 삭제해야 합니다.

  • MongoDB 6.0 이상에서 MongoDB 5.0.7 이하로 다운그레이드 하는 경우.

  • MongoDB 5.3에서 MongoDB 5.0.5 이하로 다운그레이드하는 경우.

시계열 컬렉션을 참조하세요.

MongoDB 6.0부터는 모든 setClusterParameter 작업이 완료되었는지 확인해야 합니다. 샤딩된 클러스터에서 진행 중인 setClusterParameter 작업이 있는 경우 fCV 다운그레이드를 성공적으로 수행할 수 없습니다.

MongoDB 5.1부터는 이전에 SELinux 정책을 복제한 디렉토리에서 다음 명령을 실행해야 이전 MongoDB 버전으로 다운그레이드할 수 있습니다.

sudo make uninstall

MongoDB 6.0 버전부터 기본 KMIP 프로토콜 버전은 1.2 입니다. KMIP 버전 1.0 또는 1.1을 사용하려면 useLegacyProtocol 설정을 사용합니다.

MongoDB 5.3 Enterprise부터는 다음과 같은 KMIP 설정을 사용할 경우 이전 MongoDB 버전으로 다운그레이드하기 전에 먼저 구성 파일에서 해당 설정을 제거해야 합니다.

MongoDB 6.0부터는 changeStreamOptions.preAndPostImages.expireAfterSeconds를 사용해 변경 스트림 전후 이미지 컬렉션의 시간 기반 보존을 제어하려면 다운그레이드를 진행할 때 활성화된 setClusterParameter 작업이 없도록 해야 합니다.

MongoDB 6.0 Enterprise부터는 감사 로그 암호화를 사용할 경우 이전 MongoDB 버전으로 다운그레이드하기 전에 먼저 구성 파일에서 해당 설정을 제거해야 합니다.

기존에 있던 암호화된 감사 로그는 암호화된 상태로 유지되며, 암호화된 로그의 저장과 처리를 위해 개발한 모든 절차를 그대로 유지할 수 있습니다.

감사 로그를 참조하세요.

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

애플리케이션이 변경 스트림을 사용하는 경우, 애플리케이션이 다운그레이드 후에는 사용할 수 없는 showExpandedEvents 옵션을 사용하지 않도록 하세요.

클러스터 구성에서 LDAP 구성에 새로운 "srv:" 또는 "srv_raw:" URL 유형을 사용하는 경우 다운그레이드 후 다시 시작할 수 없습니다. 다운그레이드하기 전에 클러스터 구성에서 새 URL 유형을 제거하세요.

FCV 다운그레이드를 완료하기 전에 먼저 암호화된 필드를 사용하는 컬렉션을 제거해야 합니다. encryptedFields를 사용하는 컬렉션이 있는 경우 다운그레이드가 완료되지 않습니다.

애플리케이션에서 $densify 를 사용하여 격차를 채우는 문서를 만들거나, 누락된 값을 추가하거나, 지정된 값 범위로 데이터를 채우는 경우 다운그레이드하기 전에 집계 파이프라인에서 $densify 단계를 제거합니다. $densify 단계는 5.1 버전 이상에서만 사용할 수 있습니다.

돌아가기

6.0