문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

MongoDB 4.4 릴리스 노트

이 페이지의 내용

  • 패치 릴리스
  • 풀타임 진단 데이터 캡처 요구 사항
  • 집계
  • 복제본 세트
  • 샤드 클러스터
  • 프로젝션
  • 트랜잭션
  • 정렬
  • 보안 개선 사항
  • 구조화된 로깅
  • 플랫폼 지원
  • Mongo 셸
  • 도구
  • 드라이버
  • 인덱스
  • 제거된 명령
  • Networking
  • 일반 개선 사항
  • 호환성에 영향을 미치는 변경 사항
  • 업그레이드 절차
  • 다운그레이드 고려 사항
  • 다운로드
  • 알려진 문제
  • 이슈 신고하기

경고

과거 릴리스 제한 사항

아래의 중요 공지는 일부 이전 MongoDB 버전에 영향을 미칩니다. 배포가 중요 주의보의 영향을 받는 기능에 따라 달라지는 경우 사용 가능한 최신 패치 릴리스로 업그레이드하십시오.

이슈
영향을 받는 버전
WT-7426
4.4.5
4.4.8
4.4.2 - 4.4.8
4.4.0 - 4.4.18 (ARM64 또는 POWER 시스템 아키텍처)
4.4.8 - 4.4.21 (Ops Manager 또는 Cloud Manager 클러스터의 증분 백업)
4.4.7

중요

MongoDB Server가 신뢰할 수 없는 연결에 성공할 수 있는 문제를 수정했습니다.

4.4.29 이전의 MongoDB 4.4에서 CVE-2024-1351로 인해, --tlsCAFileCAFile 의 특정 구성에서는 MongoDB Server가 Peering 인증서 유효성 검사를 건너뛰어 신뢰할 수 없는 연결이 성공할 수 있습니다.

이렇게 하면 인증서 유효성 검사 실패로 인해 닫혔어야 하는 연결 및 TLS에서 제공하는 보안 보장을 효과적으로 줄일 수 있습니다. 이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.

  • 7.0.0 - 7.0.5

  • 6.0.0 - 6.0.13

  • 5.0.0 - 5.0.24

  • 4.4.0 - 4.4.28

CVSS 점수: 8.8

CWE: CWE-295: 부적절한 인증서 유효성 검사

수정된 문제:

수정된 문제:

  • 서버-76299 세컨더리 서버의 serverStatus 내 writeConflicts 보고

  • 서버-78828 정렬 중에 LDAP 호스트 타이밍 데이터가 일관되지 않을 수 있습니다.

  • WT-11031 체크포인트에서 시간 창 정보가 없는 테이블을 건너뛰도록 RTS 수정

  • 서버- 밸런서는70973 사용 가능한 샤드가 더 이상 없을 때 컬렉션 반복을 중지해야 합니다.

  • 서버-71627 캐시된 컬렉션 경로 정보를 새로 고침하면 클러스터에 1 청크가 백만 개 있는 경우 모든 클라이언트 요청이 심각하게 차단됩니다.

  • 서버-78813 lastCommitted optime이 null인 배출 커서로 커밋 지점 전파가 무기한 실패합니다.

  • WT-8570 복구 중에 가장 오래된 ID를 늘리지 않음

  • WT-10449 기록 저장소에 기록할 업데이트가 없는 경우 업데이트 체인을 저장하지 마세요.

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.25

  • 4.4.25 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

경고

기존 MongoDB 인스턴스를 MongoDB 4.4.19로 업그레이드할 때 mongod.conf 파일에 fork: true 이 설정되어 있으면 해당 인스턴스가 시작되지 않을 수 있습니다.

업그레이드 문제는 .deb 또는 설치 패키지를 사용하는 모든 MongoDB .rpm 인스턴스에 영향을 미칩니다. tarball(.tgz) 릴리스 또는 기타 패키지 유형을 사용하는 설치는 영향을 받지 않습니다. 자세한 내용은 SERVER-74345 를 참조하세요.

fork: true 설정을 제거하려면 시스템 터미널에서 다음 명령을 실행합니다.

systemctl stop mongod.service
sed -i.bak '/fork: true/d' /etc/mongod.conf
systemctl start mongod.service

두 번째 systemctl 명령은 설정이 제거된 후 업그레이드된 인스턴스를 시작합니다.

수정된 문제:

  • 서버-68122 초기 동기화 중 컬렉션 WiredTiger 구성 문자열 복제 조사

  • 서버-71759 dataSize 명령이 양보하지 않습니다.

  • 서버-72222 분할된 클러스터에서 결과를 병합할 때 단일 축소 최적화를 사용한 MapReduce가 실패합니다.

  • 서버-72535 샤드 클러스터를 사용하면 대체 대소문자를 사용하여 'admin', 'local', 'config' 데이터베이스를 생성할 수 있습니다.

  • 서버-70235 42v4 시 범위 삭제 문서를 생성하지 않습니다. -v .4 컬렉션 uuid 불일치 시 업그레이드

  • WT-9599 차단 관리자에서 fallocate를 호출하기 위해 핫 백업 잠금을 획득합니다.

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.19

  • 4.4.19 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

수정된 문제:

수정된 문제:

  • 서버-64983 TransactionParticipant::_resetTransactionState에서 WT 트랜잭션을 롤백하기 전에 클라이언트 잠금을 해제합니다.

  • 서버-62229 recoverFromOplogAsStandalone=true일 때 인덱스 빌드 항목을 적용할 때 발생하는 불변성 수정

  • 서버-60412 호스트 메모리 제한 검사에서 cgroup v 를 준수하지 않습니다.2

  • 서버-55429 수신자가 겹치는 범위를 정리하지 않을 때 마이그레이션을 더 일찍 중단합니다.

  • WT-8924 행 저장소에서 충돌을 확인할 때 삽입 목록이 있는 경우 디스크 시간 창을 확인하지 않습니다.

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.14

  • 4.4.14 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

  • WT-8395 443 444 에서 업그레이드한 후 데이터가 일치하지 않습니다. . 및 . . ~ 4.4.8+ 및 5.0.2+

  • 서버-60326 X 인증서에509 주체 이름이 비어 있으면 Windows Server가 시작되지 않습니다.

  • 서버-60310 OCSP 응답 유효성 검사는 관련 없는 인증서의 상태를 고려하지 않아야 합니다.

  • 서버-59226 중단 불가능으로 표시된 프로필 세션으로 단계적으로 종료할 때 교착 상태

  • 서버-56226 [v4.4] 청크 마이그레이션이 커밋되지 않도록 config.collections 항목에 'permitMigrations' 필드를 도입합니다.

  • 서버-51329 mongos 서버를 종료할 때 예기치 않은 재시도 불가 오류 발생

  • 서버-45953 oplog 독자가 읽기 티켓을 획득하지 못하도록 면제

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.11

  • 4.4.11 변경 로그

수정된 문제:

수정된 문제:

  • 서버-57630: Ubuntu 18 04 에서 SSL_OP_NO_RENEGOTIATION을 1 활성화합니다. OpenSSL 에 대해 실행할 때 .1.1

  • 서버-34938: 단일 oplog 배치에 의해 캐시에 고정된 콘텐츠로 인한 2차 속도 저하 또는 중단

  • WT-8005: 기록 저장 항목이 해결되지 않은 상태로 남아 있을 수 있는 준비 커밋 버그 수정

  • WT-7995: 체크포인트 가시성을 초과할 수 없는 전역 가시성 수정

  • WT-7984: 체크포인트에서 데이터 페이지를 생략할 수 있는 버그 수정

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.9

  • 4.4.9 변경 로그

수정된 문제:

  • 서버-58936: 고유 인덱스 제약 조건이 적용되지 않을 수 있습니다.

  • 서버-58258: 'replSetGetStatus' 회신에 'initialSync' 필드가 없다고 어설션하기 전에 초기 동기화가 상태를 지울 때까지 기다립니다.

  • 서버-52906: 마이그레이션 실패 후 복제 인덱스를 롤백한 moveChunk가 샤드 키 인덱스 누락으로 인해 무기한 중단될 수 있음

  • WT-7837: 어설트 실행을 방지하기 위해 wt_hs_insert_updates에서 업데이트 구조 지우기

  • WT-6729: 스테이블의 활성 트랜잭션 검사로 롤백을 실행하기 전에 제거 중지

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.8

  • 4.4.8 변경 로그

수정된 문제:

  • 서버-57476: oplog 슬롯을 유지하는 동안 준비 충돌 시 작업이 차단되어 복제가 무기한 지연될 수 있습니다.

  • 서버-56054: 복제 작성기 스레드 풀의 minThreads 값을 (으)로 변경합니다.0

  • 서버-53760: $unwind + $sort 파이프라인은 디스크에 유출될 때 많은 수의 파일 핸들을 생성합니다.

  • 서버-47699: 범위 삭제에서 사용하는 일드 유형을 YIELD_MANUAL에서 YIELD_AUTO로 변경합니다.

  • WT-7185: 트랜잭션이 강제 제거되고 가장 오래된 경우 중단하지 않도록 합니다.

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.7

  • 4.4.7 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

  • 서버-48471: 해시된 인덱스는 멀티키로 잘못 표시되어 샤드 키로 사용할 수 없게 될 수 있습니다.

  • 서버-50769: 서버가 expr{"expr":"_currentApplyOps.getArrayLength() > 0","file":"src/mongo/db/pipeline/document_source_change_stream_transform.cpp","line": 후 다시 시작되었습니다. }535}}

  • 서버-52919: 초기 동기화에 와이어 압축이 활성화되지 않음

  • WT-7109: 이전 버전과의 호환성을 위해 더 이상 지원되지 않는 구성 옵션을 유지합니다.

  • WT-7117: 업데이트를 복원하는 동안 온디스크 기본 업데이트보다 최신인 수정 사항을 건너뛰는 RTS

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.4

  • 4.4.4 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

  • 서버-48531: 3 방식으로 청크 스플리터, 준비된 트랜잭션 및 스텝다운 스레드 간에 교착 상태가 발생할 수 있습니다.

  • 서버-48641: 체크아웃된 세션의 쓰기 고려를 기다리는 MigrationDestinationManager로 인한 교착 상태

  • 서버-49546: setFCV를 4 4 로 설정합니다. 는 범위 삭제 작업을 한 번에 하나씩 삽입하지 않고 배치로 삽입해야 합니다.

  • 서버-49694: 샤드 클러스터에서는 가장 가까운 읽기 또는 헤지된 읽기(hedged read)가 니어 샤드 복제본으로 라우팅되지 않을 수 있습니다.

  • 서버-50137: MongoDB가 에서 생성된 oplog 항목으로 인해 불변성 실패와 3 함께 충돌합니다.4

  • 서버-50140: 초기 동기화는 동기화 소스의 부정확한 재시작을 견딜 수 없습니다.

  • 서버-50170: mongos에서 서버 선택 실패 수정

  • WT-6623: 복구 파일 스캔에서 연결 수준 파일 ID를 설정합니다.

  • 모든 JIRA 이슈가 4 에 종료되었습니다.4.1

  • 4.4.1 변경 로그

버전 부터 시작됩니다.4 4 mongod mongos, 또는 의 FTDC(Full Time Diagnostic Data Capture) 스레드가 mongodmongos diagnostic.data storage.dbPath실패하면 원래 프로세스를 종료합니다. 가장 일반적인 오류를 방지하려면 / 를 실행하는 사용자에게 ( 의 mongod 경우) 또는 와 systemLog.path 병렬( 의 경우) 내에 FTDC 디렉토리를 만들 수 있는 권한이 있는지 확인하세요 mongos).

MongoDB 4.4 은(는) $unionWith 애그리게이션 단계를 추가하여 여러 컬렉션의 파이프라인 결과를 단일 결과 세트로 결합하는 기능을 제공합니다.

자세한 내용은 $unionWith를 참조하세요.

버전 4 부터 시작됩니다.4, MongoDB는 사용자가 사용자 지정 애그리게이션 표현식을 정의할 수 있는 다음과 같은 새로운 연산자를 제공합니다.

이러한 새로운 연산자가 추가되면 mapReduce$where 에 의존하는 대신 애그리게이션을 사용하여 사용자 지정 JavaScript 표현식을 작성할 수 있습니다.

참고

버전 4.4 이전에도 사용자 지정 함수 없이 $group$merge 등과 같은 다른 집계 파이프라인 연산자 를 사용하여 다양한 맵 리듀스 표현식을 다시 작성할 수도 있습니다.

자세한 내용은 맵-리듀스에서 집계 파이프라인으로의 전환을 참조하세요.

연산자
설명
지정된 문자열 또는 바이너리 데이터 값의 콘텐츠 크기를 바이트 단위로 반환합니다.
지정된 문서의 크기를 바이트 단위로 반환합니다(예: bsontype Object). 단, BSON으로 인코딩된 경우.
배열의 첫 번째 요소를 반환합니다.
사용자 지정 애그리게이션 표현식을 정의합니다.

지정된 표현식이 integer, decimal, double 또는 long로 해석되는 경우 부울 true을 반환합니다.

표현식이 다른 BSON types, null 또는 누락된 필드로 해석되는 경우 부울 false 를 반환합니다.

배열의 마지막 요소를 반환합니다.
지정된 입력에서 일치하는 문자열의 첫 번째 인스턴스를 바꿉니다.
주어진 입력에서 일치하는 문자열의 모든 인스턴스를 대체합니다.

MongoDB 4.4부터 시작됩니다:

  • $out 는 다른 데이터베이스의 컬렉션으로 출력할 수 있습니다. 이전 버전에서는 $out 가 애그리게이션이 실행되는 동일한 데이터베이스 데이터베이스의 컬렉션으로만 출력할 수 있습니다.

  • $out 는 클러스터의 모든 노드에 featureCompatibilityVersion4.4 이상으로 설정되어 있고 읽기 설정 이 세컨더리 읽기를 허용하는 경우에만 복제본 세트 세컨더리 노드에서 실행할 수 있습니다.드라이버 설명서에서 드라이버가 언제 지원을 추가했는지 확인하세요.

MongoDB 4 부터 시작.4 ( 4.2.4 부터 사용 가능), $indexStats 출력에 다음 필드가 포함됩니다.

필드
설명
해당되는 경우 샤드의 이름입니다.
인덱스 사양 문서
인덱스가 현재 빌드 중인지 여부를 나타내는 부울 플래그입니다.

MongoDB 4.4부터 시작됩니다:

  • $merge 는 다른 데이터베이스의 컬렉션으로 출력할 수 있습니다. 이전 버전에서는 $merge 가 애그리게이션이 실행되는 동일한 데이터베이스의 컬렉션으로만 출력할 수 있습니다.

  • $merge 는 클러스터의 모든 노드에 featureCompatibilityVersion4.4 이상으로 설정되어 있고 읽기 설정 이 세컨더리 읽기를 허용하는 경우에만 복제본 세트 세컨더리 노드에서 실행할 수 있습니다.드라이버 설명서에서 드라이버가 언제 지원을 추가했는지 확인하세요.

$merge 는 집계 중인 collection과 동일한 collection으로 출력할 수 있습니다. $lookup 와 같이 파이프라인의 다른 단계에 나타나는 collection으로 출력할 수도 있습니다.

경고

$merge 집계 중인 동일한 컬렉션에 출력이 발생하면 문서가 여러 번 업데이트되거나 작업이 무한 루프가 발생할 수 있습니다. 이 동작은 에서 수행한 업데이트로 인해 $merge 디스크에 저장된 문서의 물리적 위치가 변경될 때 발생합니다. 문서의 물리적 위치가 변경되면$merge 에서 문서를 완전히 새로운 문서로 간주하여 추가 업데이트를 수행할 수 있습니다. 이 동작에 대한 자세한 내용은 ' 할로윈 문제'를 참조하세요.

버전 4 부터 시작됩니다.4,

MongoDB 4 부터 시작.4, $collStatsqueryExecStats 필드를 인수 문서로 허용합니다. 이 필드를 제공하면 출력에 다음 필드가 반환됩니다.

collectionScans 필드에는 다음 필드가 포함된 내장된 문서가 포함되어 있습니다.

필드 이름
설명
total
collection 스캔을 수행한 총 쿼리 수를 제공하는 64비트 정수입니다. 이 총합은 테일 커서( tailable cursor)를 사용한 쿼리와 사용하지 않은 쿼리로 구성됩니다.
nonTailable

MongoDB 부터 4 4 db.collection.explain().aggregate() executionStats allPlansExecution executionTimeMillisEstimate시작. , 및 모드에서 메서드를 실행하면 설명 출력 에 나열된 각 파이프라인 단계 에 및 nReturned가 포함됩니다.

MongoDB 4.4부터는 초기 동기화를 수행하는 보조가 일시적 (즉, 다음과 같은) 이유로 동기화 프로세스가 중단된 경우 동기화 프로세스를 재개하려고 시도할 수 있습니다. 임시) 네트워크 오류, 컬렉션 삭제 또는 컬렉션 이름 변경 등이 있습니다. 또한 동기화 원본은 다시 시작 가능한 초기 동기화를 지원하기 위해 MongoDB 4.4를 실행해야 합니다. 동기화 소스가 MongoDB 4.2 이하 버전을 실행하는 경우, 보조 소스는 일시적이지 않은 네트워크 오류가 발생한 것처럼 초기 동기화 프로세스를 다시 시작해야 합니다.

기본적으로 보조 동기화는 24시간 동안 초기 동기화를 다시 시도합니다. MongoDB 4.4는 보조 서버가 초기 동기화를 재개하려고 시도하는 시간을 제어하기 위해 initialSyncTransientErrorRetryPeriodSeconds 서버 매개변수를 추가했습니다. 보조 서버가 구성된 기간 동안 초기 동기화 프로세스를 성공적으로 재개할 수 없는 경우 복제 세트에서 새로운 정상 소스를 선택하고 초기 동기화 프로세스를 처음부터 다시 시작합니다.

MongoDB 4 이전 버전.4, 세컨더리는 프로세스 중에 오류가 발생하면 전체 초기 동기화를 다시 시작합니다.

MongoDB 4 부터 시작.4, 소스 에서 동기화 하면 동기화 중인 세컨더리로 oplog 항목의 지속적인 스트림을 보냅니다.

44 MongoDB 4 4 이전 버전. , 세컨더리 가 소스에서 동기화 요청을 보내고 응답을 기다리는 방식으로 oplog 항목 배치를 oplogFetcherUsesExhaust 가져왔습니다. 이를 위해서는 각 배치의 oplog 항목에 대해 네트워크 왕복이 필요했습니다. MongoDB . 는 스트리밍 복제를 비활성화하고 이전 복제 동작을 사용하기 위한 시작 매개 변수를 추가합니다.

자세한 내용은 스트리밍 복제를 참조하세요.

Mongo 4 부터 시작.4, 컬렉션의 롤백 디렉토리 이름은 컬렉션 네임스페이스가 아닌 컬렉션의 UUID를 따라 지정됩니다. 예:

<dbpath>/rollback/20f74796-d5ea-42f5-8c95-f79b39bad190/removed.2020-02-19T04-57-11.0.bson

자세한 내용은 데이터 롤백을 참조하세요.

다음 기준이 두 가지 모두 충족되는 경우 에만 oplog 항목을 제거하는 oplog 항목을 보존할 최소 시간을 지정할 수 있습니다.mongod

  • oplog가 구성된 최대 크기에 도달했습니다.

  • oplog 항목이 호스트 시스템 시계를 기준으로 구성된 시간보다 오래된 경우

기본적으로 MongoDB는 최소 oplog 보존 기간을 설정하지 않으며, 설정된 최대 oplog 크기를 유지하기 위해 가장 오래된 항목부터 자동으로 oplog를 잘라냅니다.

mongod 시작 시 최소 oplog 보존 기간을 구성하려면 다음 중 하나를 수행하십시오.

실행 중인 mongod 의 최소 oplog 보존 기간을 구성하려면 replSetResizeOplog 를 사용하십시오. mongod 실행 시 최소 oplog 보존 기간을 설정하면 시작 시 설정된 모든 값이 재정의됩니다. 서버를 다시 시작해도 변경 사항을 유지하려면 해당 구성 파일 설정 또는 명령줄 옵션의 값을 업데이트해야 합니다.

중요

oplog는 구성된 시간 동안 oplog 항목을 유지하기 위해 제한 없이 늘릴 수 있습니다. 하지만 이로 인해 쓰기의 양이 많아지고 보유 기간이 늘어나며 시스템 디스크 공간이 줄어들거나 고갈될 수 있습니다.

다음도 참조하세요.

MongoDB 4 부터 시작.4, 복제본 세트 세컨더리의 느린 oplog 애플리케이션 로그는 slowOpSampleRate 의 영향을 받습니다. 이전 버전에서는 MongoDB가 샘플 속도에 관계없이 모든 느린 oplog 항목을 기록했습니다.

slowOpSampleRate 프로파일링하거나 기록해야 하는 느린 작업의 비율을 지정합니다.

참고

featureCompatibilityVersion 4.4 이상이 필요합니다.

복제본 mongod 세트 또는 샤딩된 클러스터의 각 4.4 에는 복제본 세트 멤버 간에 인덱스 빌드를 동시에 시작할 수 있도록 featureCompatibilityVersion 이 이상으로 설정되어 있어야 합니다 .

인덱스는 데이터를 보유한 모든 복제본 세트 멤버에서 동시에 복제본 세트 또는 샤드 cluster 빌드를 기반으로 합니다. 샤드 cluster의 경우 인덱스 빌드는 인덱싱되는 collection에 대한 데이터가 포함된 샤드에서만 발생합니다. 프라이머리에는 인덱스를 사용할 준비가 된 것으로 표시하기 전에 빌드를 완료해야 하는 자신을 포함한 최소한의 데이터 보유 voting 멤버(즉, 쿼럼 커밋)가 필요합니다.

기본적으로 인덱스 빌드는 데이터를 보유한 모든 투표 멤버의 쿼럼 커밋을 사용합니다. 기본이 아닌 쿼럼 커밋을 사용하여 인덱스 빌드를 시작하려면 MongoDB 4 을(를) 사용합니다.4 은 commitQuorum 매개 변수를 createIndexes 또는 해당 셸 헬퍼 db.collection.createIndex()db.collection.createIndexes() 에 추가합니다.

진행 중인 인덱스 빌드에 필요한 쿼럼을 수정하려면 MongoDB 4 을(를) 수정합니다.4 에는 새로운 setIndexCommitQuorum 명령이 도입되었습니다.

자세한 내용 은 복제된 환경에서의 인덱스 빌드를 참조하세요.

MongoDB 부터 4 4시작. , 명령은 투표 멤버의 과반수가 복제본 구성을 replSetReconfig 설치할 때까지 기다렸다가 성공을 반환합니다. 투표 멤버는 members[n].votes 1중재자를 포함하여 이 인 모든 복제본 멤버입니다. 먼저, 작업은 프라이머리에 새 구성을 설치하기 전에 현재 구성이 커밋될 때까지 기다립니다. 그런 다음 작업은 투표 멤버의 과반수가 구성을 설치할 때까지 기다렸다가 성공적으로 반환합니다. 자세한 내용은 재구성이 과반수 구성원이 복제본 구성을 설치할 때까지 대기 항목을 참조하세요.

replSetReconfig 는 기본적으로 투표 멤버의 과반수가 구성을 설치할 때까지 무기한 기다립니다. MongoDB 4. 또한 4 는 작업이 성공적으로 반환될 때까지 대기할 최대 시간을 지정하기 위해 선택적 maxTimeMS 매개 변수를 replSetReconfig 에 추가합니다.

MongoDB 4 부터 시작.4, replSetReconfig 명령을 사용하면 한 번에 1 개 이하의 voting 멤버를 추가하거나 제거할 수 있습니다. 여러 투표 멤버를 추가하거나 제거하려면 replSetReconfig 또는 rs.reconfig() 연산을 실행하여 한 번에 한 명의 멤버를 추가하거나 제거합니다. 자세한 내용은 재구성 시 한 번에 투표 멤버 둘 이상을 추가 또는 제거할 수 없음에서 확인하세요.

replSetGetConfig 명령은 프라이머리에서 실행할 때 새 옵션 commitStatus: true 를 지정할 수 있습니다. 이 옵션과 함께 실행하면 명령은 출력에 commitStatus 필드를 포함합니다. 이 출력 필드는 복제본 세트를 다시 재구성할 수 있도록 복제본 세트의 이전 재구성이 커밋되었는지 여부를 나타냅니다. 자세한 내용은 replSetGetConfig 명령을 참조하세요.

MongoDB 4. 이(가)4 복제본 세트 구성 문서 term 에 필드를 추가합니다. 복제본 세트 멤버는 term 및 를 사용하여 version '최신' 복제본 구성에 대한 합의를 도출합니다.featureCompatibilityVersion (fCV) : "4.4" 를 수행하여 replSetReconfig term 구성 문서에 필드를 추가하고 새 구성이 대다수의 복제본 세트 멤버에게 전파될 때까지 차단합니다. 마찬가지로 로 fCV : "4.2" 다운그레이드하면 암시적으로 재구성을 수행하여 term 필드를 제거합니다.

MongoDB 4 부터 시작.4, initialSyncSourceReadPreference 매개변수를 사용하여 선호하는 초기 동기화 소스를 지정할 수 있습니다. 이 매개변수는 mongod 시작 시에만 setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하여 설정할 수 있습니다.

initialSyncSourceReadPreference 다음 읽기 설정 모드를 지원합니다.

복제본 세트가 chaining 비활성화된 경우 기본 initialSyncSourceReadPreference 읽기 설정 모드는 primary 입니다.

태그 세트 또는 maxStalenessSeconds 을(를) initialSyncSourceReadPreference 으)로 지정할 수 없습니다.

다음도 참조하세요.

버전 4.4부터 MongoDB는 선택 가능한 보조 멤버의 캐시를 가장 최근에 액세스한 데이터로 사전 워밍하기 위해 미러링된 읽기를 제공합니다. 미러링된 읽기를 사용하면 프라이머리는 수신한 오퍼레이션의 하위 집합을 미러링하여 선택 가능한 보조 노드의 하위 집합으로 전송할 수 있습니다. 보조 캐시를 미리 준비하면 선택 후 성능을 더 빠르게 복원하는 데 도움이 될 수 있습니다.

참고

클라이언트에 대한 프라이머리의 응답은 미러 읽기의 영향을 받지 않습니다. 미러링된 읽기는 프라이머리의 '파이어 앤 포겟(fire-and-forget)' 작업입니다. 즉, 프라이머리는 미러링된 읽기에 대한 응답을 기다리지 않습니다.

MongoDB 4.4 은 다음과 같은 미러링된 읽기 매개변수를 추가합니다. 시작 시 setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하거나 런타임에 setParameter 명령을 사용하여 매개 변수를 설정할 수 있습니다.

매개변수
설명

미러링된 읽기에 대한 samplingRatemaxTimeMS 설정을 지정합니다.

{ samplingRate: <float>, maxTimeMS: <int> }

samplingRate 0 의 은 미러링된 읽기를 끕니다.

작업에 필드를 포함하도록 지정한 경우 serverStatus 명령과 해당 mongo shell 메서드 db.serverStatus()mirroredReads 을 반환합니다.

db.runCommand( { serverStatus: 1, mirroredReads: 1 } )

또는

db.serverStatus( { mirroredReads: 1 } )

4 부터 시작됩니다.4, MongoDB는 refineCollectionShardKey 명령을 제공합니다. 새 명령을 사용하면 기존 키에 접미사 필드를 하나 이상 추가하여 컬렉션의 샤드 키를 구체화할 수 있습니다. 컬렉션의 샤드 키를 수정하면 데이터를 더욱 세분화할 수 있으며 기존 키의 카디널리티가 충분하지 않아 점보(즉, 분할할 수 없는) 청크 가 생성되는 상황을 해결할 수 있습니다.

예를 들어, 샤드 키가 { customer_id: 1 } 인 기존 orders 컬렉션이 있을 수 있습니다. 샤드 키에 접미사 order_id 필드를 추가하여 { customer_id: 1, order_id: 1 } 이 새 샤드 키가 되도록 샤드 키를 변경할 수 있으며, 이를 통해 customer_idorder_id 필드를 모두 기준으로 데이터를 배포할 수 있습니다.

refineCollectionShardKey 명령을 사용하려면 샤드 클러스터의 기능 호환성 버전(fcv)4.4 이어야 합니다. 자세한 내용은 refineCollectionShardKey 명령을 참조하세요.

참고

샤드 키를 세분화한 후에는 컬렉션의 모든 문서에 접미사 필드가 없을 수 있습니다. 누락된 샤드 키 필드를 채우려면 누락된 샤드 키 필드를 참조하세요 .

샤드 키를 수정하기 전에 컬렉션의 전체 또는 대부분의 문서에 접미사 필드가 있는지 확인하여 나중에 필드를 채울 필요가 없도록 합니다.

이전 버전에서는 샤드 키를 선택하면 해당 샤드 키를 수정할 수 없습니다.

중요

샤드 키 누락

접미사가 있는 샤드 키를 세분화할 수 있는 기능으로 컬렉션의 모든 문서에 접미사 필드가 없을 수 있습니다. 버전 4 부터 시작됩니다.4, 샤드 컬렉션의 문서에 샤드 키 필드가 누락될 수 있습니다. 이전 버전에서는 샤드 컬렉션의 모든 문서에 샤드 키 필드가 있어야 합니다. 자세한 내용은 누락된 샤드 키 필드를 참조하세요.

지연 시간을 최소화하기 위해 mongos 인스턴스는 기본적으로 헤지 읽기 를 사용할 수 있습니다. 헤지된 읽기(hedged read)를 사용하면 mongos 인스턴스는 쿼리된 각 샤드당 여러 멤버로 읽기 작업을 라우팅하고 샤드당 첫 번째 응답자로부터 결과를 반환할 수 있습니다. 기본적으로 mongos 인스턴스는 헤지된 읽기(hedged read) 사용을 지원합니다. 헤지된 읽기(hedged read)에 대한 mongos 인스턴스의 지원을 끄려면mongos 에 대한 readHedgingMode 매개변수를 설정합니다

헤지된 읽기(hedged read)는 읽기 설정의 일부로 작업별로 지정됩니다. primary 이 아닌 읽기 설정 은 헤지된 읽기(hedged read)를 지원합니다. 읽기 설정 nearest 은 기본적으로 헤지된 읽기(hedged read)를 지정합니다.

자세한 내용은 다음을 참조하세요.

매개변수
설명
헤지된 읽기(hedged read)에 대한 mongos 인스턴스의 지원을 활성화하거나 비활성화합니다.

읽기 설정에 대해 헤지된 읽기(hedged read)를 지정하려면 MongoDB 4 을(를) 사용합니다.4 에는 헤지된 읽기( hedged read) 옵션 이 도입되었습니다. MongoDB 드라이버를 사용하여 설정하려면 드라이버 읽기 설정 API 문서를 참조하세요.

다음 mongo shell 메서드는 지정된 읽기 설정 (read preference)에 대해 헤지된 읽기(hedged read)를 활성화하는 헤지 옵션을 허용할 수 있습니다.

명령 serverStatus 및 해당 mongo shell 메서드 db.serverStatus()hedgingMetrics 을 반환합니다.

MongoDB 4.4 은 명령이 실행되는 시점에 샤드 컬렉션의 청크가 균형을 이루고 있는지(즉, 이동할 필요가 없는지) 여부에 대한 정보를 반환하는 balancerCollectionStatus 명령과 mongo 셸 헬퍼 메서드 sh.balancerCollectionStatus() 를 제공합니다. 또는 이동해야 합니다. 이 명령을 사용하면 초기 청크 생성 및 마이그레이션이 완료되었는지 확인할 수 있습니다.

MongoDB 4 부터 시작합니다.4, mongos 는 다음과 같은 새로운 기본 시작 동작을 추가합니다.

  • mongos 첫 번째 수신 클라이언트 연결에 대해 온디맨드 방식으로 수행하는 대신 시작 시 샤드 클러스터의 라우팅 테이블을 미리 로드합니다.

  • mongos 수신 클라이언트 연결에 대해 온디맨드 방식으로 수행하는 대신 시작 시 샤드 호스트로 연결 풀을 미리 워밍업합니다.

이 동작으로 인해 mongos 인스턴스가 시작되거나 다시 시작된 후 초기 클라이언트 연결의 서비스 속도가 빨라집니다. 특히, 여러 mongos 인스턴스를 사용하는 사이트에서 연결 설정을 기다려야 하는 해당 인스턴스에 대한 초기 클라이언트 요청 없이 필요에 따라 인스턴스를 다시 시작하거나 새 인스턴스를 추가할 수 있습니다.

라우팅 테이블 사전 로드와 연결 풀 사전 예열은 모두 기본적으로 활성화되어 있습니다.

MongoDB 4.4 는 이 동작을 제어하기 위해 다음 매개 변수를 추가합니다.

또는 flushRouterConfig movePrimary 명령을 실행한 dropDatabase 후에는 더 이상 를 실행할 필요가 없습니다. 이제 이 두 명령은 실행 시 필요에 따라 샤드 클러스터의 라우팅 테이블을 자동으로 새로 고칩니다.flushRouterConfig flushRouterConfig고려 사항 에 설명된 경우에도 명령을 수동으로 실행하는 것이 좋습니다.

MongoDB 4 부터 시작.4, 단일 해시 필드가 있는 복합 샤드 키를 사용하여 컬렉션을 샤딩할 수 있습니다. 4 이전.4, MongoDB는 해시 필드가 있는 복합 샤드 키를 지원하지 않습니다.

복합 해시 샤딩은 영역 샤딩 과 같은 기능을 지원하며, 접두사(즉, 첫 번째) 비해시 필드 또는 필드가 영역 범위를 지원하고 해시 필드는 샤딩된 데이터의 보다 균등한 배포를 지원합니다. 예를 들어, 다음 작업은 구역 샤딩을 지원하는 복합 해시 샤드 키에서 컬렉션을 샤딩합니다.

sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)

복합 해시 샤딩은 단조롭게 증가하는 필드 와 관련된 데이터 배포 문제를 해결하기 위해 해시 접두사가 있는 샤드 키도 지원합니다. 예를 들어 다음 작업은 해시 필드가 샤드 키 접두사인 복합 해시 샤드 키에서 컬렉션을 샤딩합니다.

sh.shardCollection(
"examples.compoundHashedCollection",
{ "_id" : "hashed", "fieldA" : 1}
)

다음도 참조하세요.

MongoDB 4 부터 시작.4, 다음 변경 사항은 페일오버 중 청크 마이그레이션 및 고아 문서 정리 복원력을 개선합니다.

  • 청크 마이그레이션 후 정리를 기다리는 청크 범위는 이제 config.rangeDeletions 컬렉션에 유지되고 샤드 전체에 복제됩니다. 페일오버가 발생하면 샤드의 새 프라이머리는 config.rangeDeletions 컬렉션의 문서를 읽고 해당 범위 삭제를 재개합니다. 정리 대기 중인 범위를 설명하는 문서는 범위가 삭제된 후 config.rangeDeletions 컬렉션에서 삭제됩니다.

  • cleanupOrphaned 명령은 더 이상 샤드에서 고아 문서를 삭제하지 않습니다. 대신 cleanupOrphaned 는 샤드에서 삭제되도록 예약된 고아 문서가 삭제될 때까지 기다립니다.

샤드의 프라이머리에서 disableResumableRangeDeleter 매개 변수를 true 로 설정하여 샤드에서 범위 삭제를 일시 중지합니다.

MongoDB 4 부터 시작.4, config 서버 프라이머리는 기본적으로 샤드 컬렉션에 대해 샤드 전체에 인덱스 불일치가 있는지 확인합니다. serverStatus 명령은 shardedIndexConsistency 필드를 반환하여 config 서버 프라이머리에서 실행할 때 인덱스 불일치를 보고합니다.

인덱스 일관성 검사를 구성하기 위해 MongoDB는 다음 매개 변수를 제공합니다.

매개변수
설명
인덱스 일관성 검사를 활성화하거나 비활성화합니다.
config 서버의 프라이머리가 샤드 컬렉션의 인덱스 일관성을 확인하는 간격입니다.

MongoDB 4 부터 시작.4, 진행 중인 removeShard 작업이 두 개 이상 있을 수 있습니다.

이전 버전에서는 다른 작업이removeShard removeShard 진행 중이면 가 오류를 반환합니다.

버전 4 부터 시작됩니다.4, MongoDB는 샤드 키 크기에 대한 512바이트 제한을 제거합니다. MongoDB 4 의 경우.2 이하에서는 샤드 키는 512 바이트를 초과할 수 없습니다.

4 부터 시작됩니다.4, find 또는 후속 getMore 명령이 쿼리된 샤드를 사용할 수 없어 부분적인 결과를 반환하는 경우 출력에 부울 플래그 partialResultsReturned 이 포함됩니다.

너무 커서 마이그레이션할 수 없는 청크의 경우 MongoDB 4 부터 시작합니다.4:

4 부터 시작됩니다.4, 오래된 청크가 있는 경우 라우터 가 이전에 해당 청크를 보유했거나 현재 보유하고 있는 샤드에 액세스할 때만 카탈로그 캐시가 새로 고쳐집니다.

MongoDB 4 이전 버전.4, 오래된 청크가 있으면 컬렉션의 전체 청크 배포가 오래된 것으로 표시되고 샤드에 접속하는 모든 라우터 가 샤드 카탈로그 캐시를 새로 고쳐야 합니다. MongoDB 4.4 는 대상 샤드에 대해서만 카탈로그 캐시 새로 고침을 비활성화하고 이전 카탈로그 캐시 새로 고침 동작을 사용하기 위한 enableFinerGrainedCatalogCacheRefresh 시작 매개 변수를 추가합니다. enableFinerGrainedCatalogCacheRefresh 매개변수의 기본값은 true 입니다.

버전 4 부터 시작됩니다.4 (및 4.2.7), MongoDB는 system.sessions 컬렉션을 최소 1024 청크로 자동으로 분할하고 클러스터의 샤드 전체에 청크를 균일하게 분산합니다.

MongoDB 4.4부터 find()findAndModify() 프로젝션을 애그리게이션의 $project 단계와 일치시키기 위한 일환으로,

  • find()findAndModify() 프로젝션은 리터럴 및 애그리게이션 변수 사용을 포함하여 애그리게이션 표현식 및 애그리게이션 구문을 사용할 수 있습니다. 애그리게이션 표현식과 구문을 사용하여 새 필드를 프로젝션하거나 기존 필드를 새 값으로 프로젝션할 수 있습니다.

  • find()findAndModify() 프로젝션은 중첩된 양식을 사용하여 포함된 필드를 지정할 수 있습니다. 예: { field: { nestedfield: 1 } }점 표기법. 이전 버전에서는 점 표기법만 사용할 수 있습니다.

자세한 내용은 다음을 참조하세요.

다음도 참조하세요.

MongoDB 4 부터 시작.4, $meta 연산자는 indexKey 메타데이터 검색에 대한 지원을 추가합니다. indexKey 메타데이터는 디버깅 목적으로만 사용되며 애플리케이션 로직에는 사용되지 않습니다. 자세한 내용은 $meta 를 참조하세요.

버전 부터 4 시작됩니다.4, MongoDB는 { $meta: "textScore" } 와 함께 사용할 때 db.collection.find() 다음과 같이 를 변경합니다.

  • { $meta: "textScore" } $text사용하려면 쿼리 조건자에 연산자를 지정해야 합니다.

  • textScore 을(를) 프로젝트할 필요 없이 검색 관련성(예: { $meta: "textScore" })을 기준으로 결과 문서를 정렬할 수 있습니다.

    이전 버전에서는 { $meta: "textScore" }sort() 표현식을 포함하려면 프로젝션에도 동일한 표현식을 포함해야 했습니다.

  • 프로젝션과 정렬 모두에 { $meta: "textScore" } 표현식을 포함하는 경우(예: db.collection.find(<$text search>, <projection>).sort(<sort>)) 프로젝션 및 정렬 문서의 표현식에 대해 서로 다른 필드 이름을 가질 수 있습니다.

    이전 버전의 MongoDB에서는 프로젝션과 정렬 모두에 { $meta: "textScore" } 를 포함하는 경우 두 위치에 동일한 필드 이름을 지정해야 합니다.

자세한 내용은 텍스트 점수 메타데이터 $meta: "textScore" 를 참조하세요. "textScore" 프로젝션 및 정렬의 예는 텍스트 검색 점수 예시를 참조하세요.

참조: 텍스트 검색 메타데이터 { $meta: "textScore" } 쿼리 요구 사항

MongoDB 4 부터 시작.4 기능 호환성 버전(fcv) "4.4" 을 사용하는 경우 트랜잭션이 크로스 샤드 쓰기 트랜잭션(write transaction)이 아닌 이상 다중 문서 트랜잭션 내에서 컬렉션과 인덱스를 생성할 수 있습니다.

트랜잭션 내에서 컬렉션을 만들 때

트랜잭션 내에서 인덱스를 생성하는 경우:

  • 존재하지 않는 컬렉션에 인덱스를 만들 수 있습니다. 컬렉션은 작업의 일부로 생성됩니다.

  • 동일한 트랜잭션에서 이전에 생성된 새 빈 컬렉션에 인덱스를 생성할 수 있습니다.

  • 시스템 컬렉션 db.collection.createIndex()에 대해 메서드를 실행하면 실패합니다.

자세한 내용 은 트랜잭션에서 컬렉션 및 인덱스 생성을 참조하세요.

MongoDB 4.4 은 트랜잭션 내에서 컬렉션 및 인덱스 생성을 활성화(기본값)하거나 비활성화할 수 있는 새 매개변수 shouldMultiDocTxnCreateCollectionAndIndexes 를 추가합니다. 샤드 클러스터에 대한 매개변수를 설정할 때는 모든 샤드에서 매개변수를 설정합니다.

트랜잭션 내에서 컬렉션이나 인덱스를 명시적으로 만들려면 트랜잭션 읽기 고려 수준이 "local"여야 합니다. 명시적 생성은 이제 끝났습니다.

다음도 참조하세요.

MongoDB 4 부터 시작.4, sort() 메서드는 이제 $sort 애그리게이션 단계와 동일한 정렬 알고리즘을 사용합니다. 이 변경 사항으로 인해 중복 값이 포함된 필드에 sort() 를 수행하는 쿼리로 인해 해당 값에 대해 일관되지 않은 정렬 순서가 발생할 가능성이 훨씬 높아집니다.

중복 값에 sort() 를 사용할 때 정렬 일관성을 보장하려면 고유 값만 포함하는 추가 필드를 정렬에 포함합니다.

이 작업은 정렬에 _id 필드를 추가하면 쉽게 수행할 수 있습니다.

자세한 내용은 Sort Consistency(정렬 일관성)을(를) 참조하세요.

MongoDB Enterprise 4.4 는 MongoDB와 함께 사용할 플랫폼의 Kerberos 구성 유효성을 검사하고 Kerberos를 통한 엔드 투 엔드 클라이언트 인증을 테스트하기 위한 새로운 mongokerberos 도구를 제공합니다. 실행되면 mongokerberos 은(는) 발생한 문제를 나타내는 보고서를 반환하고 문제를 해결하기 위한 잠재적인 조언을 제공합니다. mongokerberos 는 MongoDB Enterprise에서만 사용할 수 있습니다.

버전 4 부터 시작됩니다.4, MongoDB는 기본적으로 OCSP(온라인 인증서 상태 프로토콜)를 사용하여 인증서 해지를 확인할 수 있도록 설정합니다. OCSP를 사용하면 주기적으로 Certificate Revocation List (CRL) 를 다운로드하고 업데이트된 CRL로 mongod / mongos 을(를) 다시 시작할 필요가 없습니다.

버전 4.0 및 4.2에서는 Windows 또는 macOS에서 system certificate store 사용해야만 OCSP를 사용할 수 있습니다.

다음도 참조하세요.

OCSP 지원의 일환으로 MongoDB 4.4 는 Linux에서 다음을 지원합니다.

  • OCSP 스테이플링. OCSP 스테이플링을 사용하면mongodmongos 인스턴스가 TLS/SSL 핸드셰이크 중에 클라이언트에 OCSP 상태 응답을 제공할 때 인증서에 OCSP 상태 응답을 연결하거나 "스테이플"합니다. OCSP 상태 응답을 인증서에 포함하면 OCSP 스테이플링을 사용하면 클라이언트가 제공된 인증서의 OCSP 상태를 검색하기 위해 별도의 요청을 할 필요가 없습니다.

  • OCSP 필수 스테이플 확장. OCSP 필수 스테이플은 서버 인증서에 추가할 수 있는 확장으로, 클라이언트가 TLS/SSL 핸드셰이크 중에 인증서를 받을 때 OCSP 스테이플을 기대하도록 지시합니다.

MongoDB 4.4 은 다음 OCSP 매개변수를 추가합니다. setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하여 시작 시 이러한 매개 변수를 설정할 수 있습니다.

매개변수
설명
OCSP 지원을 사용하거나 사용하지 않도록 설정합니다.
스테이플링된 OCSP 상태 응답을 새로 고치기 전에 대기할 시간(초)을 지정합니다.
2} / 인스턴스가 mongod 대기해야 하는 최대 시간(초)을 지정합니다. / 인스턴스가 인증서에 대한 OCSP 상태 응답을 받기 위해 대기해야 하는 최대 시간을 지정합니다.mongos
2} / 이(가) 클라이언트 인증서를 mongod 확인하기 위해 대기하는 최대 시간(초)을 지정합니다. / 가 클라이언트 인증서를 확인할 때 OCSP 응답을 대기해야 하는 최대 초를 지정합니다.mongos

MongoDB 4 부터 시작.4, mongod / mongos 는 x가 표시되면 연결 시 경고를 기록합니다.509 인증서가 mongod/mongos 시스템 시계로부터 30 일 이내에 만료됩니다. 특히 mongod 또는 mongos 에 대한 다음 연결은 x를 트리거할 수 있습니다.509 인증서 만료 경고:

경고 로그 메시지는 다음과 유사합니다.

<Timestamp> W NETWORK [connection] Peer certificate <Certificate Subject Name> expires...

클라이언트 x를 사전에 갱신하는 것을 고려합니다. 클러스터에 대한 지속적인 연결을 보장하기 위해 509 인증서가 곧 만료됩니다.

MongoDB 4.4 는 인증서 만료 경고 임계값을 제어하기 위해 tlsX509ExpirationWarningThresholdDays 매개 변수를 추가합니다. 경고를 비활성화하려면 매개변수를 0 로 설정합니다. 전체 문서는 tlsX509ExpirationWarningThresholdDays 를 참조하세요.

CentOS 8 및 RHEL 8, MongoDB 4.4 (버전 4.2, 4.0 및 3.6)은 TLS1 을 지원합니다.3.

mongod, mongos 또는 mongoldap 는 LDAP 서버에 대한 네트워킹 또는 인증 실패로 인해 사용자와 DN(고유 이름) 매핑 중 하나를 평가할 수 없는 경우 오류를 반환합니다.

mongod, mongos 또는 mongoldap 는 연결 요청을 거부하고 나머지 매핑(있는 경우)을 확인하지 않습니다.

사용자-DN 매핑을 지정하려면 다음을 참조하세요.

MongoDB 4 부터 시작.4, mongod / mongos 인스턴스는 이제 모든 로그 메시지를 구조화된 JSON 형식으로 출력합니다. 로그 항목은 일련의 키-값 쌍으로 작성되며, 각 키는 '심각도'와 같이 로그 메시지 필드 유형을 나타내고, 각 해당 값은 '정보'와 같이 해당 필드 유형에 대한 관련 로깅 정보를 기록합니다.

여기에는 파일, syslogstdout (표준 출력) 로그 대상 으로 전송된 로그 출력과 getLog 명령의 출력이 포함됩니다.

이전에는 로그 항목이 일반 텍스트로 출력되었습니다.

JSON 형식의 다음 로그 메시지는 mongod 이(가) 수신 대기 중이며 연결 준비가 되었음을 나타냅니다.

{"t":{"$date":"2020-05-18T20:18:13.533+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}}
{"t":{"$date":"2020-05-18T20:18:13.533+00:00"},"s":"I", "c":"NETWORK", "id":23016, "ctx":"listener","msg":"Waiting for connections","attr":{"port":27001,"ssl":"off"}}

키-값 쌍을 사용한 구조화된 로깅을 사용하면 자동화된 도구 또는 로그 수집 서비스를 통해 효율적인 로그 분석이 가능하고 프로그래밍 방식의 로그 구문 분석 이 더 쉽고 강력해집니다.

MongoDB 구조화된 로깅으로 작업할 때 타사 jq 명령줄 유틸리티 는 는 로그 항목을 쉽게 예쁘게 인쇄하고 강력한 키 기반 일치 및 필터링을 할 수 있는 유용한 도구입니다.

jq 는 오픈 소스 JSON 파서이며 Linux, Windows, macOS에서 사용할 수 있습니다.

로그 항목 구성 요소에 대한 자세한 검사와 명령줄 구문 분석 예제를 포함하여 구조화된 로깅에 대한 자세한 내용은 로그 메시지를 참조하세요.

MongoDB 4 부터 시작.4 ldapQueryPassword setParameter 명령은 문자열 또는 문자열 배열을 허용합니다. 배열로 설정하면 성공할 때까지 각 비밀번호를 시도합니다. 이를 사용하여 MongoDB의 다운타임 없이 LDAP 계정 비밀번호의 롤오버를 수행할 수 있습니다.

MongoDB 4.4 는 다음 플랫폼에 대한 지원을 추가합니다.

MongoDB 4.4 는 다음 플랫폼에 대한 지원을 제거합니다.

  • Amazon Linux 2013.03

  • 390x 아키텍처의RHEL 6 / 6 6 CentOS / Oracle

  • Windows 7 / 서버 2008 R2

  • Windows 8 / 서버 2012

  • Windows 8.1 / 서버 2012 R2

  • macOS 10.12

MongoDB 4 에서 지원되는 플랫폼 및 아키텍처의 전체 목록은 플랫폼 지원 을 참조하세요.4.

MongoDB 부터 4 시작.4,mongo 셸은 AWS IAM 자격 증명 사용을 지원합니다. AWS IAM 인증을 위해 구성된 MongoDB Atlas 클러스터에 인증합니다.

이 방식으로 인증하려면 새로운 MONGODB-AWS authentication mechanism 이(가) 사용되며, Amazon Web Services 액세스 키 ID와 비공개 액세스 키를 제공해야 하며, 이는 연결 문자열 이나 --username 를 통해 명령줄에서 지정할 수 있습니다. --password 옵션.

또한 AWS 세션 토큰 을 사용하는 경우 AssumeRole 을 사용할 때 임시 자격 증명으로 인증하기 위해 요청을 사용하거나 Lambda와 같이 이 값을 지정하는 AWS 리소스로 작업할 때 AWS_SESSION_TOKEN 값을 사용하여 연결 authMechanismProperties --awsIamSessionToken 문자열에 해당 세션 토큰을 제공하거나 옵션을 통해 명령줄에서 제공할 수 있습니다.

또는 AWS 액세스 키 ID, 보안 액세스 키 또는 세션 토큰이 해당 AWS IAM 환경 변수 를 사용하여 플랫폼에서 정의된 mongo 경우 셸은 이러한 환경 변수 값을 사용하여 인증합니다. 연결 문자열에 지정할 필요가 없습니다.

사용에 대한 연결 문자열 인증 옵션 및 예시는 MONGODB-AWS를 사용하여 Atlas 클러스터에 연결을 참조하세요.

MongoDB 4 부터 시작.4, 다음 도구에 대한 설명서가 MongoDB 데이터베이스 도구 프로젝트로 마이그레이션되었습니다.

MongoDB 데이터베이스 도구는 Apache 라이선스, 버전 2 을(를)0 사용합니다. .mongodb/mongo-tools 참조 소스 코드의 경우.

참고

나열된 도구의 이전 버전에 대한 설명서는 해당 버전의 MongoDB 서버 매뉴얼을 참조하세요.

이전 문서에 대한 빠른 링크:

MongoDB Enterprise 4.4 는 MongoDB와 함께 사용할 플랫폼의 Kerberos 구성 유효성을 검사하고 Kerberos를 통한 엔드 투 엔드 클라이언트 인증을 테스트하기 위한 새로운 mongokerberos 도구를 제공합니다. 실행되면 mongokerberos 은(는) 발생한 문제를 나타내는 보고서를 반환하고 문제를 해결하기 위한 잠재적인 조언을 제공합니다. mongokerberos 는 MongoDB Enterprise에서만 사용할 수 있습니다.

자세한 내용은 mongokerberos 참조 페이지를 참조하세요.

MongoDB 4 4mongoreplay 부터 시작. , 이(가) MongoDB 패키징에서 제거되었습니다. mongoreplay 및 관련 문서가 다음으로 마이그레이션 됩니다. github 프로젝트. 의 mongodb-labs 프로젝트는 실험적이며 MongoDB에서 공식적으로 지원하지 않습니다.

이전 문서에 대한 퀵 링크

Community 및 Enterprise 에디션 모두에 대한 Windows MSI 설치 프로그램 에는 MongoDB 데이터베이스 도구 (mongoimport, mongoexport 등)가 포함되어 있지 않습니다. Windows에 MongoDB 데이터베이스 도구를 다운로드하여 설치하려면 MongoDB 데이터베이스 도구 설치를 참조 하세요.

MongoDB 4 에 의존하는 경우.2 또는 이전 MSI 설치 프로그램을 사용하여 데이터베이스 도구를 MongoDB Server와 함께 설치하려면 이제 데이터베이스 도구를 별도로 다운로드해야 합니다.

MongoDB 4.4 는 단일 해시 필드 로 복합 인덱스를 생성하기 위한 지원을 추가합니다. MongoDB 4.2 및 이전 버전에서는 단일 필드 해시 인덱스만 지원했습니다.

다음 작업은 country_id 에 복합 해시 인덱스를 생성합니다.

db.examples.createIndex( { "country" : 1, "_id" : "hashed" } )

복합 해시 인덱스를 사용하려면 featureCompatibilityVersion4.4 으)로 설정해야 합니다.

다음도 참조하세요.

버전 4 부터 시작됩니다.4, MongoDB에는 쿼리 플래너에서 인덱스를 숨기거나 숨기기를 해제하는 기능이 추가되었습니다. 쿼리 플래너에서 숨겨진 인덱스는 쿼리 계획 선택의 일부로 평가되지 않습니다.

플래너에서 인덱스를 숨기면 인덱스를 삭제하지 않고도 인덱스 삭제의 잠재적 영향을 평가할 수 있습니다. 영향이 부정적인 경우 삭제된 인덱스를 다시 만들 필요 없이 인덱스 숨기기를 해제할 수 있습니다. 그리고 인덱스는 숨겨진 동안 완전히 유지되므로 숨겨진 인덱스는 숨기기를 해제하면 즉시 사용할 수 있습니다.

자세한 내용은 숨겨진 인덱스를 참조하세요.

숨겨진 인덱스 를 지원하기 위해 MongoDB는 다음을 도입합니다.

dropIndexes 에 지정된 인덱스가 아직 빌드 중인 경우 dropIndexes 는 진행 중인 빌드를 중단하려고 시도합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 삭제하는 것과 동일한 효과가 있습니다. MongoDB 4 이전 버전.4, dropIndexes 은 컬렉션에 진행 중인 인덱스 빌드가 있는 경우 오류를 반환합니다. 이 동작은 셸 헬퍼 db.collection.dropIndex()db.collection.dropIndexes() 에도 적용됩니다.

관련 진행 중인 빌드 세트에서 특정 인덱스를 삭제하려면 인덱스 빌드가 완료될 때까지 기다렸다가 해당 인덱스를 dropIndexes 또는 해당 셸 헬퍼에 지정합니다.

자세한 내용은 다음을 참조하세요.

db.collection.drop() 메서드와 drop 명령은 collection을 삭제하기 전에 대상 collection에서 진행 중인 인덱스 빌드를 모두 중단합니다.

복제본 세트 또는 샤드 복제본 세트의 경우 기본 인덱스에서 인덱스를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. MongoDB가 프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고 성공하면 연결된 abort oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드를 커밋하거나 중단하기 전에 프라이머리에서 oplog 항목을 커밋하거나 중단할 때까지 기다립니다.

복제본 세트 또는 샤드 복제본 세트의 경우 기본 인덱스에서 인덱스를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. MongoDB가 프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고 성공하면 연결된 abort oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드를 커밋하거나 중단하기 전에 프라이머리에서 oplog 항목을 커밋하거나 중단할 때까지 기다립니다.

db.dropDatabase() 메서드와 dropDatabase 명령은 데이터베이스를 삭제하기 전에 대상 데이터베이스의 collection에서 진행 중인 인덱스 빌드를 중단합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 삭제하는 것과 동일한 효과가 있습니다.

MongoDB 4.4 은 geoHaystack 인덱스 및 geoSearch 명령을 더 이상 사용하지 않습니다. 대신 또는 와 $geoNear 2함께 d $geoWithin 인덱스 를 사용합니다.

MongoDB는 다음 명령과 mongo shell helper를 제거합니다.

제거된 명령
제거된 도우미
대안
cloneCollection
db.cloneCollection()
  • mongoexportmongoimport 사용하거나

  • 집계 파이프라인 $out 또는 $merge 단계를 사용하거나

  • 드라이버를 사용하여 스크립트를 작성합니다.

planCacheListPlans
PlanCache.getPlansByQuery()
$planCacheStats 변경 사항 도 참조하세요.
planCacheListQueryShapes
PlanCache.listQueryShapes()
$planCacheStats 변경 사항 도 참조하세요.

MongoDB 4 부터 시작합니다.4, mongodmongos 는 기본적으로 TFO(TCP Fast Open) 연결을 지원합니다. TFO를 사용하려면 클라이언트와 mongod/mongos 호스트 머신이 모두 필요하며 TFO를 활성화해야 합니다.

Windows

다음 Windows 운영 체제에서 TFO를 지원합니다.

  • Microsoft Windows Server 2016 이상.

  • Microsoft Windows 10 업데이트 1607 이상.

macOS
macOS 10.11 (El Capitan) 이상 TFO 지원
Linux

Linux 커널 3 을(를) 실행하는 Linux 운영 체제.7 이상은 인바운드 TFO 연결을 지원할 수 있습니다.

Linux 커널 4 을(를) 실행하는 Linux 운영 체제.11 이상은 인바운드 및 아웃바운드 TFO 연결을 모두 지원할 수 있습니다.

인바운드 및/또는 아웃바운드 TFO 연결을 지원하려면 /proc/sys/net/ipv4/tcp_fastopen 값을 설정합니다.

  • 아웃바운드 TFO 연결만 허용하려면 1 으)로 설정하세요.

  • 인바운드 TFO 연결만 허용하려면 2 으)로 설정하세요.

  • 인바운드 및 아웃바운드 TFO 연결을 사용하려면 3으로 설정합니다.

MongoDB 4.4 은(는) TFO를 제어하기 위해 다음 매개 변수를 추가합니다.

매개변수
설명

기본값: true (활성화됨)

인바운드 TFO 연결에 대한 지원을 활성화하거나 비활성화합니다. mongod/mongos

기본값: true (활성화됨)

Linux 운영 체제만 해당

mongod/mongos 에서 아웃바운드 TFO 연결에 대한 지원을 활성화하거나 비활성화합니다.

기본값: 1024

보류 중인 TFO 연결의 대기열 크기를 제어합니다.

MongoDB 4.4 은 serverStatusdb.serverStatus() 의 출력에 다음 카운터를 추가합니다.

카운터
설명

Linux 한정

TFO에 대한 커널 지원을 나타냅니다.

수신 TFO 연결에 대한 운영 체제 지원을 나타냅니다.
발신 TFO 연결에 대한 운영 체제 지원을 나타냅니다.
mongod/mongos 가 마지막으로 시작된 이후 mongod / mongos 에 대해 허용된 수신 TFO 연결의 총 개수를 나타냅니다.

TFO에 대한 완전한 논의는 이 문서의 범위를 벗어납니다. TFO에 대한 자세한 내용을 보려면 다음 외부 리소스부터 시작하세요.

MongoDB가 인덱스를 사용하여 지정된 cursor.sort() 작업에 대한 정렬 순서를 얻을 수 없는 경우 MongoDB는 데이터에 대해 블로킹 정렬을 수행해야 합니다. 블로킹 정렬은 MongoDB가 결과를 반환하기 전에 정렬에 필요한 모든 입력 문서를 사용하고 처리해야 함을 나타냅니다. 블로킹 정렬은 컬렉션이나 데이터베이스에서 동시 작업을 차단하지 않습니다.

MongoDB 이전 4 버전.4, 블로킹 정렬 작업에 32 메가바이트 이상의 시스템 메모리가 필요한 경우 MongoDB가 오류를 반환했습니다. MongoDB 부터 시작됩니다.4 4, 정렬 작업을 100 차단하면 정렬 작업에 사용할 수 있는 시스템 메모리 제한이 메가바이트로 늘어납니다.100 메가바이트 4 4 이상의 시스템 메모리가 필요한 블로킹 정렬 작업의 경우, 쿼리가 (cursor.allowDiskUse() MongoDB의 새로운 기능 )을(를) 지정 하지 않는한 MongoDB는 오류를 반환합니다.

정렬 및 인덱스 사용에 대한 자세한 내용은 정렬 및 인덱스 사용을 참조 하세요.

MongoDB 4.4 이(가) 명령에 새로운 옵션 allowDiskUse find 를 추가합니다.allowDiskUse: true 를 사용하면 메가바이트 메모리 제한을 초과하는 인덱싱되지 않은('차단') 정렬 작업을 처리할 때 작업에서 디스크의 임시 파일을사용할 수 100 있습니다. MongoDB 이전 버전. ,4 정렬을4 find 처리하는 동안 메모리 제한을 초과한 경우 블로킹 정렬이 포함된 작업이 실패했습니다.

db.collection.find() cursor.sort()를 4 4 사용하는 셸 메서드의 cursor.allowDiskUse() 경우 MongoDB 입니다. 은 커서 수정자를 추가합니다.

allowDiskUsecursor.allowDiskUse() 는 MongoDB가 인덱스 를 사용하여 정렬을 충족할 수 있거나 블로킹 정렬에 100 메가바이트 미만의 메모리가 필요한 경우에는 효과가 없습니다.

MongoDB 드라이버를 통해 실행된 쿼리에 대해 allowDiskUse 를 활성화하는 방법에 대한 지침은 선호하는 MongoDB 4 설명서를 참조하세요.4-호환 드라이버.

MongoDB 4 부터 시작.4,

featureCompatibilityVersion"4.4" 이상으로 설정된 경우 MongoDB는 collection/네임스페이스 제한을 255 바이트로 높입니다. collection 또는 뷰의 경우 네임스페이스에는 데이터베이스 이름, 점(.) 구분 기호, collection/뷰 이름(예: <database>.<collection>)이 포함됩니다.

$currentOpcurrentOp 명령에는 진행 중인 유효성 검증 작업에 대한 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

유효성 검사 작업에 대한 로그 메시지에는 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

MongoDB 4 부터 시작.4, compact 는 다음 메타데이터 작업만 차단합니다.

compact 은(는) 현재 작동 중인 데이터베이스에 대한 MongoDB CRUD 작업 을 차단하지 않습니다.

이전에는 compactMongoDB CRUD 작업 을 포함하여 운영 중인 데이터베이스에 대한 모든 작업을 차단했으므로 예정된 유지 관리 기간 동안에만 사용하기에 적합했습니다.

MongoDB 부터 4 4 force 시작.compact , 플래그는 가 복제본 세트 의 프라이머리 에서 실행되도록 합니다.

이전에는 force 옵션을 로 설정하면 true compact 복제본 세트프라이머리 에서 를 실행할 수 있고,false 설정하면 프라이머리에서 실행할 때 오류를 반환했습니다 .

다음도 참조하세요.

MongoDB 4 부터 시작.4, mongod --repair 는 다음에 대한 모든 인덱스를 다시 작성합니다.

  • 컬렉션 데이터와 하나 이상의 인덱스 간에 불일치가 있는 컬렉션입니다.

  • 회수 및 수정된 컬렉션.

이전 버전의 MongoDB에서는 mongod --repair 옵션이 모든 컬렉션의 모든 인덱스를 재구축했습니다.

serverStatus 는 을 flowControl.locksPerKiloOp flowControl.locksPerOp반환합니다.

serverStatus 출력에 다음과 같은 새로운 필드가 포함됩니다.

shardingStatistics.numHostsTargeted CRUD 작업 및 애그리게이션 명령의 대상이 되는 샤드 수를 보고합니다. 클러스터에서 각 작업을 수행할 때마다 관련 찾기, 삽입, 업데이트, 삭제 또는 집계 지표가 증가합니다.

replSetGetStatus 다음과 같은 새 필드를 반환합니다.

MongoDB 4 부터 시작.4, mongo shell 메서드 db.auth(<username>, <password>)<password> 에 대한 비밀번호 또는 passwordPrompt() 메서드를 전달하지 않으면 비밀번호를 입력하라는 메시지를 표시합니다.

뷰에 대해 작업을 실행할 find$natural 정렬을지정할 수 있습니다 .

Linux에서 실행되는 MongoDB 인스턴스의 경우:

  • mongodmongos 프로세스가 SIGUSR2 신호를 받으면 각 프로세스 스레드의 로그에 역추적 세부 정보가 추가됩니다.

  • 역추적 세부 정보에는 프로세스에 대한 함수 호출이 표시되며, 이러한 정보는 진단에 사용하고 필요한 경우 MongoDB 지원팀에 제공할 수 있습니다.

역추적 기능은 다음 아키텍처에서 사용할 수 있습니다.

  • x86_64

  • arm64 (MongoDB 5.0.10 에서 시작)

자세한 내용 은 역추적 생성을 참조하세요.

MongoDB 4 부터 시작.4 부터 FTDC 는 이제 호스트 운영 체제가 아닌 컨테이너의 관점에서 컨테이너에서 실행 중인 mongod 의 사용률 데이터를 보고합니다. 자세한 내용은 풀타임 진단 데이터 캡처 에서 확인 가능합니다.

MongoDB 4 부터 시작.4, mongod 는 플랫폼의 열린 파일 수에 대해 구성된 ulimit 값이 64000 미만인 경우 시작 경고를 기록합니다. 이전에는 이 값이 1000 미만인 경우에만 경고가 기록되었습니다. 자세한 내용은 권장 ulimit 설정 을 참조하세요.

MongoDB 4.4 이(가) 데이터베이스 프로파일러 출력 및 replanReason 진단 로그 메시지 에 필드를 추가합니다. 필드에는 쿼리 시스템이 replanReason 캐시된 계획을 제거한이유가 포함되어 있습니다.

dbStats 명령과 해당 mongo shell helper db.stats() 가 다음을 반환합니다.

collStats 명령, 해당 mongo shell helper db.collection.stats()$collStats 애그리게이션 단계는 다음을 반환합니다.

MongoDB 4 부터 시작.4, 다음 데이터베이스 명령은 hint 인수를 받아 사용할 인덱스를 지정할 수 있습니다.

참조:

MongoDB 4 부터 시작.4, MongoDB는 mongos 인스턴스에서 JavaScript 실행을 허용합니다. mongos 인스턴스에서 JavaScript 실행을 비활성화하려면 다음을 수행합니다.

이전 버전의 MongoDB는 mongos 인스턴스에서 JavaScript 실행을 허용하지 않습니다.

참고

featureCompatibilityVersion 4.4 이상이 필요합니다.

복제본 세트 또는 샤드 클러스터의 mongodfeatureCompatibilityVersion 이 최소 4.4 로 설정되어 있어야 글로벌 기본 읽기 및 쓰기 고려를 구성할 수 있습니다.

MongoDB 4 부터 시작.4, 복제본 세트 및 샤드 클러스터는 글로벌 기본 읽기 및 쓰기 고려 설정 구성을 지원합니다. 지정된 읽기 또는 쓰기 고려 설정을 명시적으로 지정하지 않은 클라이언트는 해당 전역 기본 설정을 상속합니다.

기본 글로벌 기본 읽기 또는 쓰기 고려를 구성하기 위해 MongoDB는 setDefaultRWConcern 관리 명령을 추가합니다. 복제본 세트의 경우 프라이머리 멤버에 대해 명령을 실행합니다. 샤드 클러스터의 경우 mongos 에서 명령을 실행합니다.

전역 기본 읽기 또는 쓰기 고려 설정을 검색하기 위해 MongoDB는 getDefaultRWConcern 관리 명령을 추가합니다.

MongoDB 4 부터 시작.4, 읽기 고려 객체에는 읽기 고려의 출처를 나타내는 provenance 필드가 포함될 수 있습니다.

다음 표는 가능한 읽기 provenance 고려 의 값과 그 중요성을 보여줍니다.

출처
설명
clientSupplied
읽기 우려 사항은 애플리케이션에서 지정되었습니다.
customDefault
읽기 고려가 사용자가 정의한 기본값에서 발생했습니다. setDefaultRWConcern을 참조하세요.
implicitDefault
다른 모든 읽기 고려 사양이 부재해 서버에서 읽기 고려가 발생했습니다.

읽기 작업이 기록되거나 프로파일링된 경우 작업 항목에는 provenance 필드를 포함한 읽기 고려 객체가 포함됩니다.

MongoDB는 서버에 대한 요청에 provenance 필드를 지정하지 않는 것이 좋습니다. 이 필드는 진단 목적으로만 사용해야 합니다.

MongoDB 4 부터 시작.4, 쓰기 고려 객체에는 쓰기 고려의 출처를 나타내는 provenance 필드가 포함될 수 있습니다.

다음 표는 가능한 쓰기 고려 provenance 의 값과 그 중요성을 보여줍니다.

출처
설명
clientSupplied
쓰기 우려 사항은 애플리케이션에서 지정되었습니다.
customDefault
쓰기 고려는 사용자 정의된 기본값에서 비롯된 것입니다. setDefaultRWConcern을 참조하십시오.
getLastErrorDefaults
쓰기 고려는 복제본 세트의 settings.getLastErrorDefaults 필드에서 발생했습니다.
implicitDefault
쓰기 고려는 다른 모든 쓰기 고려 사양이 없는 상태에서 서버에서 발생했습니다.

쓰기 작업이 기록되거나 프로파일링된 경우 작업 항목에는 provenance 필드를 포함한 쓰기 고려 객체가 포함됩니다.

MongoDB는 서버에 대한 요청에 provenance 필드를 지정하지 않는 것이 좋습니다. 이 필드는 진단 목적으로만 사용해야 합니다.

MongoDB 4.4 Enterprise에는 Kerberos 인증의 일환으로 KMIP 서버에 대한 초기 연결을 향상시키기 위해 두 가지 새로운 구성 설정이 도입되었습니다.

mongod 이(가) KMIP 서버에 대한 실패한 초기 연결을 재시도하는 횟수를 제어하려면 다음을 수행합니다.

포기하거나 다시 시도하기 전에 KMIP 서버의 초기 응답을 기다리는 시간 제한(밀리초)을 제어하려면 다음을 수행합니다.

이러한 설정은 MongoDB Enterprise에서만 사용할 수 있습니다.

의 새로운 processUmask 시작 옵션을 mongod 사용하면 umask 를 통해 권한을 honorSystemUmask 설정할 수 false 있습니다. 이(가) (으)로 설정된 경우 그룹 및 기타 사용자의 경우

MongoDB 4 부터 시작합니다.4, mapReduce 명령 및 db.collection.mapReduce() 셸 메서드는 verbose 옵션을 무시합니다.

MongoDB 4 부터 시작합니다.4, explain 명령 또는 db.collection.explain() 셸 메서드를 사용하여 mapReduce 또는 db.collection.mapReduce() 의 결과를 미리 볼 수 있습니다.

버전 4.4부터:

  • 샤드 cluster에서 실행된 명령에 대한Explain 결과 mongos 에는 serverInfo 각 샤드에 대해 반환된 객체 외에도 에 대한 최상위 serverInfo 객체가 포함됩니다. This is also available in versions 4.2.2, 4.0.14, and 3.6.16.

  • 설명 결과 에는 이 인 경우 serverInfo 객체가 optimizedPipeline true포함됩니다. 이전 버전의 MongoDB에서는 optimizedPipelinetrue 일 때 explain 결과에 serverInfo 객체가 포함되지 않는 경우가 있었습니다. 이 기능은 버전 4.2.2, 4.0.14, 3.6.16에서도 사용할 수 있습니다.

  • 애그리게이션에 대한설명 nReturned 결과 executionTimeMillisEstimate db.collection.explain().aggregate() 에는 executionStats 및 모드에서 메서드를 실행할 때 각 파이프라인 단계 에 대한 및 allPlansExecution 필드가 포함됩니다.

다음도 참조하세요.

MongoDB 4 부터 시작.4, 모든 데이터베이스 명령은 다음과 같은 방식으로 comment 필드 지정을 지원합니다.

예제

db.runCommand( { <command> , "comment" : <any BSON type> })

설정이 완료되면 다음 위치에서 명령 레코드와 함께 주석이 표시됩니다.

주석은 유효한 BSON 객체 (문자열, 정수, 배열 등)여야 합니다.

MongoDB 4 부터 시작.4, 위치 $ 연산자를 사용하는 경우 쿼리 문서와 프로젝션 문서 간에 서로 다른 배열 필드를 지정할 수 있습니다.

예를 들어 다음 문서를 컬렉션에 삽입하는 경우입니다.

db.foo.insertOne( { a: [ "one", "two", "three" ], b: [ 1, 2, 3 ] } )

MongoDB 4 부터 시작.4, 다음 쿼리를 사용하여 필드 a 에 지정된 쿼리와 일치하는 문서에 대해 b 필드의 첫 번째 요소만 프로젝션할 수 있습니다.

db.foo.findOne( { a: "one" }, { "b.$": 1 } )

중요

예상되는 동작을 보장하려면 쿼리 문서와 프로젝션 문서에 사용되는 배열의 길이가 동일해야 합니다. 배열의 길이가 다른 경우 특정 시나리오에서 작업이 오류를 일으킬 수 있습니다.

이전 버전의 MongoDB에서는 제한되는 배열 필드가 쿼리 문서에 나타나야 하기 때문에 이 작업이 실패했습니다.

일부 변경 사항은 호환성에 영향을 줄 수 있으며 사용자가 조치를 취해야 할 수 있습니다. 호환성 변경 사항에 대한 자세한 목록은 MongoDB 4 의 호환성 변경 사항을 참조하세요.4.

중요

기능 호환성 버전

4 에서 업그레이드합니다.2 배포, 4.2 배포에는 featureCompatibilityVersion4.2 로 설정되어 있어야 합니다. 버전을 확인하려면 다음을 수행합니다.

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

featureCompatibilityVersion 확인 및 설정에 대한 자세한 내용과 업그레이드를 위한 기타 전제 조건/고려 사항에 대한 정보는 개별 업그레이드 지침을 참조하세요.

4 으)로의 업그레이드에 대한 지침이 필요한 경우.4, MongoDB 전문 서비스 는 MongoDB 애플리케이션의 중단 없이 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다.

MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.

예를 들어 4 4 42을 다운그레이드할 수 있습니다. -series 를 로 설정합니다.4 2-series 배포. 그러나 해당 을 더 다운그레이드합니다.4 0에 시리즈 배포. -시리즈 배포는 지원되지 않습니다.

MongoDB 4 을(를) 다운로드합니다.4, MongoDB 다운로드 센터 로 이동합니다.

다음도 참조하세요.

버전
이슈
상태
4.4.0
서버-45042: Community 및 Enterprise용 MongoDB Server 설치 MSI에는 더 이상 MongoDB 데이터베이스 도구 용 바이너리가 포함되어 있지 않습니다. 자세한 내용은 도구 변경사항을 참조하세요.
해결 되지 않은
4.4.0
서버-49694: 샤드 클러스터에서nearest 읽기 또는 헤지된 읽기( hedged read )는 가까운 샤드 복제본으로 라우팅되지 않을 수 있습니다.
4 에서 수정되었습니다.4.1
4.4.0
WT-6623: 복구 파일 검사에서 연결 수준 파일 ID를 설정합니다.
4 에서 수정되었습니다.4.1

문제를 신고하려면 https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports 를 참조하세요. MongoDB 서버 또는 관련 프로젝트 중 하나에 대한 JIRA 티켓을 제출하는 방법에 대한 지침을 참조하세요.

← 5.0 변경 로그