문서 메뉴
문서 홈
/ / /
Node.js 드라이버

새로운 기능

이 페이지의 내용

다음 버전의 새로운 기능에 대해 알아보세요:

Node.js 드라이버 v6.8 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • 로컬 KMS 제공자가 런타임에 BSON Binary 인스턴스를 허용했지만 TypeScript 컴파일러가 Bufferstring 유형의 값만 허용하는 버그를 수정합니다.

  • ReadConcernMajorityNotAvailableYet 오류는 이제 재시도 가능 읽기 오류입니다.

  • 이제 KMS 제공자와 이름을 연결하고 KMS 제공자에 여러 키를 제공할 수 있습니다. 이 기능에는 mongodb-client-encryption v6 이(가) 필요합니다.0.1 이상. 애플리케이션에서 자동 KMS 제공자 새로 고침 기능을 사용하는 경우 명명된 KMS 제공자를 사용할 수 없습니다.

    다음 코드 예시는 여러 AWS 키를 사용하여 ClientEncryption 객체를 구성하는 방법을 보여줍니다.

    const clientEncryption = new ClientEncryption(keyVaultClient, {
    'aws:key1': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    'aws:key2': {
    accessKeyId: ...,
    secretAccessKey: ...
    },
    clientEncryption.createDataKey('aws:key-1', { ... });
  • 이제 KMIP 데이터 키를 만들 때 delegated 옵션을 지정할 수 있습니다. 이 옵션을 true 로 설정하면 KMIP 제공자가 로컬에서 데이터 키의 암호화 및 암호 해독을 수행하여 암호화 키가 KMIP 서버를 벗어나지 않도록 합니다. 이 기능에는 mongodb-client-encryption v6 이(가) 필요합니다.0.1 이상.

    다음 코드 예제에서는 이 옵션을 지정하는 방법을 보여 줍니다.

    clientEncryption.createDataKey('kmip', { masterKey: { delegated: true } } );
  • 이제 드라이버는 커서가 BSON 응답을 반복할 때 수신될 때 전체 BSON 응답을 디코딩하는 대신 디코딩합니다.

  • 패키지에 대한 Github mongodb 릴리스에는 이제 NPM 패키지에 대한 분리된 서명 파일 가 포함되어mongodb-X.Y.Z.tgz.sig 있습니다. 이 변경 사항은 드라이버의 버전 5.x 및 .x에 대한 모든 주요 및 패치 6 릴리스에 적용됩니다. 패키지 서명을 확인하려면 README.md 파일 의 릴리스 무결성 섹션에 있는 지침을 따르세요. 파일을 드라이버의 GitHub 리포지토리에 저장합니다.

이 릴리스에 대해 자세히 알아보려면 Github에서 v6.8.0 릴리스 노트를 참조하세요.

Node.js 드라이버 v6.7 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • MongoDB Server v7.0 이상에 연결 시 MONGODB-OIDC 인증 메커니즘에 대한 지원을 추가합니다. 이 드라이버는 Azure 머신 인증, GCP 머신 인증, 콜백 인증 및 인간 상호 작용 콜백 인증 패싯을 통한 인증을 지원합니다.

  • useBigInt64 플래그를 true로 설정하면 내부 compareTopologyVersion 함수에서 오류가 발생하던 문제를 수정합니다.

이 릴리스에 대해 자세히 알아보려면 Github에서 v6.7.0 릴리스 노트를 참조하세요.

Node.js 드라이버 v6.6 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • BSON 6.7.0 사용으로 업그레이드합니다 새로운 BSON 기능에 대한 자세한 내용은 BSON 6.5.0, BSON 6.6.0, 및 BSON 6.7.0. 릴리스 노트를 참조하세요.

  • 유동 집계 API에 addStage() 메서드를 추가합니다. 이 메서드를 사용하면 다음 예시와 같이 집계 파이프라인 단계를 개별적으로 추가할 수 있습니다.

    const documents = await users.aggregate().addStage({ $project: { name: true } }).toArray();
  • MongoMissingDependencyError 클래스에 causedependencyName 필드를 추가합니다. 이러한 필드를 사용하여 패키지가 누락되었는지 또는 패키지가 로드되지 않은 이유를 프로그래밍 방식으로 확인할 수 있습니다.

  • ServerDescription 클래스에 minRoundTripTime 속성을 추가합니다. 이 속성에는 마지막 10 하트비트 동안의 최소 왕복 시간이 포함되어 있습니다.

  • TopologyDescription 클래스에 toJSON() 메서드를 추가합니다. 이 메서드를 사용하여 TopologyDescription 객체를 JSON으로 문자열화할 수 있지만, 대신에 노드의 util.inspect() 메서드를 사용하는 것이 좋습니다. JavaScript와 드라이버에서 사용되는 모든 유형을 적절하게 처리하기 때문입니다.

  • Typescript의 Collection.indexExists(), Collection.indexes(), Collection.indexInformation() 메서드에 대한 커서 옵션 지원을 추가합니다.

  • Collection.listSearchIndexes() 메서드에서 readConcernwriteConcern 옵션에 대한 지원을 제거합니다. listSearchIndexes()는 Atlas 전용 메서드이며 Atlas Search 검색 인덱스는 이러한 옵션을 지원하지 않습니다.

  • ServerDescription.roundTripTime 속성을 이동 평균으로 재정의합니다. 이전에는 가장 최근에 관찰된 하트비트 지속 시간과 이전 지속 시간의 가중 평균이었습니다.

  • 다음 예시와 같이 인덱스를 만들 때 검색 인덱스의 유형을 지정할 수 있습니다.

    const indexName = await collection.createSearchIndex({
    name: 'my-vector-search-index',
    type: 'vectorSearch',
    definition: {
    mappings: { dynamic: false }
    }
    });
  • UpdateFilter.$currentDate 속성은 제한된 스키마가 있는 컬렉션에서 findOneAndUpdate()(과)와 같은 복합 메서드에 전달할 때 더 이상 오류를 발생시키지 않습니다.

  • 드라이버는 primary 이외의 ReadPreferenceMode를 제공한 다음 읽기 작업과 관련된 명령을 수행하려고 하는 경우에만 MongoTransactionError를 발생시킵니다.

  • TopologyDescription.error 속성의 데이터 유형은 MongoError 입니다.

  • Collection.indexExists() 메서드는 더 이상 full 옵션을 지원하지 않습니다.

  • TypeScript에서 Collection.indexInformation(), Collection.indexes()Db.indexInformation() 메서드의 반환 유형은 IndexDescriptionCompact | IndexDescriptionInfo[] 입니다.

  • AWS KMS(키 관리 시스템) 자격 증명을 검색할 때 만료 타임스탬프가 포함된 액세스 키를 받으면 드라이버가 더 이상 오류를 발생시키지 않습니다.

  • ClusterTime 인터페이스는 더 이상 TypeScript에서 signature 필드를 필수로 정의하지 않습니다.

이 릴리스에 대해 자세히 알아보려면 Github에서 v6.6.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v6.5 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • 문서 ID 생성에 pkFactory 클래스를 사용하도록 일괄 쓰기 작업을 업데이트합니다.

경고

이전에 대량 쓰기를 처리하도록 pkFactory 인스턴스를 지정한 경우 대량 쓰기를 사용하여 삽입한 문서의 _id 필드가 이 버전의 동작과 일치하지 않을 수 있습니다.

  • 드라이버가 복제본 세트의 세컨더리 노드에 연결되어 있을 때 읽기 작업과 함께 primaryPreferred에 전송되는 읽기 설정을 수정합니다.

  • 소켓 작업에 대한 약속 생성 시 메모리 누수를 수정합니다.

  • SRVTXT 기록을 병렬로 쿼리하여 DNS 시드 목록에 연결할 때 최초 연결 대기 시간을 줄입니다.

  • Kubernetes에서 클라이언트를 실행하거나 핸드셰이크 문서의 client.env.container 필드에서 컨테이너 환경을 실행할 때 컨테이너 메타데이터에 추적을 추가합니다.

  • 서버에서 반환된 원본 오류 문서를 MongoServerError 문서의 errorResponse 필드에 추가합니다.

  • 드라이버에서 사용하지 않는 CloseOptions 인터페이스를 더 이상 사용하지 않습니다.

이 릴리스에 대해 자세히 알아보려면 Github에서 v6.5.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v6.4 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • 여러 mongos 인스턴스를 사용할 수 있는 경우 읽기 및 쓰기 재시도에 서로 다른 서버가 사용됩니다.

  • 각 인증이 아닌 클라이언트 수준에서 AWS 자격 증명을 캐시합니다.

  • BSON 6.4.0 사용으로 업그레이드합니다. 새로운 BSON 기능에 대한 자세한 내용은 BSON 6.3.0BSON 6.4.0. 릴리스 노트를 참조하세요.

  • ExceededTimeLimit 오류를 발생시키는 읽기 작업이 재시도됩니다.

  • TLS 소켓KMS 제공자와 관련된 요청 문제를 수정합니다.

  • mongosh 인증을 허용하도록 saslContinue 명령의 기본64 패딩을 수정합니다.

  • 자동 완성을 활성화하고 다운스트림 입력 문제를 방지하는 데 도움이 되는 Document 대신, Filter<Schema>를 사용하여 countDocuments 유형을 입력합니다.

  • bulkWrite 명령의 $addToSet 옵션에서 유형 오류를 수정합니다. 드라이버가 Document 또는 any에서 유형을 확장하거나 모든 유형의 속성을 사용하는 $addToSet 유효성 검사를 건너뜁니다.

  • 이벤트 하트비트 지속 시간이 소켓을 생성하는 시간을 포함하지 않도록 ServerHeartbeatSucceededServerHeartbeatFailed를 수정합니다.

  • 커서 변환 스트림에서 오류를 흡수하지 않고 적절하게 내보냅니다.

  • 사용자 이름과 비밀번호를 제공할 때 AWS 세션 토큰을 선택 사항으로 설정하고, AWS SDK가 인증 요청을 처리할 수 있도록 합니다.

이 릴리스에 대해 자세히 알아보려면 Github에서 v6.4.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v6.3 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

  • 토폴로지의 노드 간 모니터링 연결 동작을 제어하기 위해 serverMonitoringMode 클라이언트 옵션을 추가합니다. 이 옵션은 auto(기본값), poll 또는 stream의 값을 사용합니다. 자세한 내용은 연결 옵션 가이드에서 이 옵션에 대한 항목을 참조하세요.

    MongoClientOptions 인스턴스에서 serverMonitoringMode 옵션을 설정하거나 연결 문자열 옵션으로 설정할 수 있습니다. 다음 예는 옵션을 stream으로 설정하여 클라이언트를 만드는 방법을 보여 줍니다:

    new MongoClient('<connection string>', { serverMonitoringMode: 'stream' });
  • serverApi 클라이언트 옵션이 설정된 경우 연결 누수를 수정합니다.

  • contentTypealiases GridFS 옵션을 사용하지 않습니다. 파일의 콘텐츠 유형과 별칭을 저장하려면 metadata 문서에 contentTypealiases 필드를 추가하세요.

이 릴리스를 자세히 알아보려면, v6.3.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v6.2 릴리스에는 다음과 같은 기능이 포함되어 있습니다:

  • 다음 이미지에 표시된 대로 유형의 색상 시각화를 포함하도록 bson 패키지 버전을 6.2.0으로 업데이트합니다.

    컬러 출력이 표시된 터미널 스크린샷

    자세한 내용은 BSON v6.2.0 릴리스 노트를 참조하세요.

  • 대량 쓰기 오류 유형의 result.insertedIds 속성에 성공적으로 삽입된 문서의 _id 값이 포함되어 있는지 확인합니다. 이전 버전에서는, 대량 쓰기 작업이 삽입 작업이 거부된 경우 result.insertedIds 속성에 시도된 삽입 전체에 대한 _id 값이 포함되었습니다.

  • 작업 결과에 관계없이 time series 컬렉션에서 findOne() 메서드를 실행할 때 생성된 암시적 세션을 닫습니다.

  • 이름이 . 문자로 시작하거나 끝나는 컬렉션을 생성할 수 있습니다. 이 변경 사항은 드라이버의 데이터베이스 및 컬렉션 이름 확인 동작을 서버의 동작과 일치시킵니다.

이 릴리스를 자세히 알아보려면, v6.2.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v6.1 릴리스에는 다음과 같은 기능이 포함되어 있습니다:

  • bson 패키지 버전을 6.1.0으로 업데이트하여 Decimal128.fromStringWithRounding() 메서드를 노출합니다. 자세한 내용은 v6.1.0 bson 릴리스 노트를 참조하세요.

  • MONGODB-AWS 인증 메커니즘을 사용하여 인증 시 리전 설정에 대한 환경 변수를 감지합니다. 드라이버가 리전 옵션을 사용하도록 지시하려면 다음 환경 변수를 모두 설정해야 합니다.

    • AWS_STS_REGIONAL_ENDPOINTS

    • AWS_REGION

  • ChangeStream 유형의 next() 메서드에 대한 재귀 호출로 인해 발생하는 메모리 누수 문제를 수정합니다.

이 릴리스를 자세히 알아보려면, v6.1.0 릴리스 하이라이트를 참조하세요.

경고

v6.0의 긴급 변경 사항

이 드라이버 버전에는 호환성이 손상되는 변경이 도입되었습니다. 이러한 변경 사항 목록은 업그레이드 안내서의 버전 6.0 호환성이 손상되는 변경 섹션을 참조하세요.

Node.js 드라이버 v6.0 릴리스에는 다음 기능이 포함되어 있습니다.

중요

사용 중단 안내

MongoClientOptions 유형에서 ssl 접두사가 붙은 모든 옵션은 더 이상 사용되지 않습니다. 또한 tlsCertificateFile 옵션은 더 이상 사용되지 않습니다.

대신 SecureContext 객체에 인증서를 저장하거나 MongoClientOptions 인스턴스에 tls-접두사 옵션을 설정해야 합니다. 자세한 내용은 연결에서 TLS 활성화하기를 참조하세요.

  • addUser() 헬퍼 명령에 대한 지원을 중단합니다. 대신 createUser MongoDB Shell 명령을 사용하세요.

  • collStats 작업에 대한 지원이 중단되었습니다. 대신 $collStats 애그리게이션 연산자를 사용하세요.

  • ConnectionPoolCreatedEvent 유형의 options 필드에는 기본이 아닌 풀 옵션인 다음 필드만 포함됩니다.

    • maxConnecting

    • maxPoolSize

    • minPoolSize

    • maxIdleTimeMS

    • waitQueueTimeoutMS

  • 드라이버는 MongoClient 인스턴스를 만들 때가 아니라 MongoClient.connect() 메서드를 호출할 때 tlsCAFiletlsCertificateKeyFile 연결 옵션에 설정된 파일을 비동기적으로 읽습니다.

  • keepAlivekeepAliveInitialDelay 연결 옵션을 제거합니다. keepAlive 값은 영구적으로 true로 설정되고 keepAliveInitialDelay 값은 300000 밀리초(300초)로 설정됩니다.

    시스템 수준에서 킵얼라이브 설정을 설정하는 방법을 알아보려면 TCP 킵얼라이브 시간이 MongoDB 배포에 영향을 미치나요? 를 참조하세요. 서버 매뉴얼의 FAQ 항목.

  • Db.command() 메서드에 대한 다음 옵션을 제거합니다:

    • willRetryWrite

    • omitReadPreference

    • writeConcern

    • explain

    • readConcern

    • collation

    • maxTimeMS

    • comment

    • retryWrites

    • dbName

    • authdb

    • noResponse

    이러한 옵션을 Db.command() 메서드에 전달할 수는 없지만 명령 문서에서 설정할 수는 있습니다. 자세한 내용은 명령 실행 가이드의 명령 옵션 섹션을 참조하세요.

이 릴리스를 자세히 알아보려면, v6.0.0 릴리스 하이라이트를 참조하세요.

중요

v5.8에서 v5.9로 업그레이드하기

이 버전에는 v5.7에서 발생한 메모리 유출에 대한 수정 사항이 포함되어 있습니다. v5.9로 업그레이드할 것을 권장합니다.

Node.js 드라이버 v5.9 릴리스에는 다음과 같은 기능이 포함되어 있습니다:

  • v5.7에서 발생한 메모리 유출 문제를 수정했습니다.

  • Decimal128 생성자 및 fromString() 메서드는 이제 34 유효 숫자 자리가 넘는 정밀도 손실을 감지하면 예외를 발생시킵니다. Decimal128 클래스는 이전 버전 드라이버의 반올림 동작을 사용하는 새로운 fromStringWithRounding() 정적 메서드를 노출합니다. 자세한 내용은 GitHub에서 js-bson 패키지의 v5.5용 릴리스 노트를 참조하세요.

  • AWS SDK에서 fromNodeProviderChain() 메서드를 호출할 때 AWS_STS_REGIONAL_ENDPOINTSAWS_REGION 환경 변수를 감지하고 적절한 옵션을 설정하기 위한 지원이 추가되었습니다.

이 릴리스를 자세히 알아보려면, v5.9.0 릴리스 하이라이트를 참조하세요.

중요

v5.8에서 v5.9로 업그레이드하기

이 버전에는 v5.7에서 발생한 메모리 유출에 대한 수정 사항이 포함되어 있습니다. v5.9로 업그레이드할 것을 권장합니다.

Node.js 드라이버 v5.8 릴리스에는 다음과 같은 기능이 포함되어 있습니다.

중요

사용 중단 안내

AutoEncrypter 인터페이스는 더 이상 사용되지 않습니다.

  • Kerberos 버전 1.x 및 2.x를 지원합니다.

  • tlsCertificateKeyFile 속성을 설정할 때 tlsCertificateFile 속성에 대한 지원 중단 오류가 발생하지 않습니다.

  • ConnectionPoolCreatedEvent 유형의 자격 증명 사용 가능성을 제거합니다. credentials 인스턴스의 MongoOptions 속성을 통해 자격 증명에 계속 액세스할 수 있습니다.

  • @aws-sdk/credential-providers 버전을 3.188.0으로 낮춥니다. 그리고 zstd을(를) ^1.0.0으로 변경합니다.

이 릴리스를 자세히 알아보려면, v5.8.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v5.7 릴리스에는 다음과 같은 기능이 포함되어 있습니다:

중요

사용 중단 안내

  • 다음의 쓰기 우려사항 옵션은 더 이상 사용하지 않습니다.

    • wtimeout

    • j

    • fsync

    쓰기 고려 동작을 지정하려면 wtimeoutMSjournal 옵션을 대신 사용합니다. 이러한 옵션에 대해 자세히 알아보려면 연결 옵션 페이지를 참조하세요.

  • SSL 옵션 및 기타 전송 암호화 옵션은 더 이상 사용되지 않습니다. 더 이상 사용되지 않는 옵션과 대신 사용할 수 있는 옵션에 대해 자세히 알아보려면 이 섹션 끝에 링크된 v5.7.0 출시 주요 사항의 레거시 SSL 옵션 사용 중단 섹션을 참조하세요.

  • 복합 연산 메서드에 대한 새로운 옵션이 추가되었습니다. includeResultMetaData 옵션을 사용하면 작업 결과에 대한 정보를 포함할지 여부를 지정할 수 있습니다. 자세한 내용은 복합 연산 가이드의 내장 메서드 섹션을 참조하세요.

  • 최대 BSON 크기 제한인 16MB를 초과하는 change stream 문서를 처리할 수 있는 change stream 분할 이벤트를 지원합니다.

  • 애플리케이션 내에서 검색 인덱스를 관리하는 API입니다. 자세히 알아보려면 검색 인덱스를 참조하세요.

이 릴리스를 자세히 알아보려면, v5.7.0 릴리스 하이라이트를 참조하세요.

Node.js 드라이버 v5.6 릴리즈에는 다음 기능이 포함되어 있습니다.

  • 이제 드라이버가 Node.js v20을 지원합니다.

  • 드라이버는 runCursorCommand() 메서드를 호출할 때 서버 명령에 대한 응답으로 커서를 반환할 수 있습니다. 이 기능에 대한 자세한 내용은 runCursorCommand API 설명서를 참조하세요.

  • Time series 컬렉션 생성 옵션 bucketMaxSpanSecondsbucketRoundingSeconds를 지정할 수 있도록 지원합니다. Time serie 컬렉션 옵션에 대한 자세한 내용은 서버 매뉴얼의 Time Series 데이터용 세분 설정을 참조하세요.

이 릴리스를 자세히 알아보려면, v5.6.0 릴리스 하이라이트를 참조하세요.

5.5 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 이제 드라이버는 AWS 환경 변수가 AWS_Lambda_로 시작하는 경우에만 AWS 환경 변수를 고려함으로써 AWS의 FaaS(서비스형 기능) 환경을 정확하게 감지합니다.

  • Queryable Encryption 기능을 사용하여 암호화된 컬렉션을 생성하려면 mongodb-client-encryption을 버전 2.8.0 이상으로 업그레이드해야 합니다.

이 릴리스를 자세히 알아보려면, v5.5.0 릴리스 하이라이트를 참조하세요.

5.4 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

중요

사용 중단 안내

  • collStats 작업은 더 이상 사용되지 않습니다. 대신 $collStats 집계 연산자를 사용합니다.

  • db.command() 메서드에 전달된 TypeScript 인터페이스에 특정 옵션이 잘못 포함되어 있습니다. 이 옵션은 더 이상 사용하지 않습니다.

  • 이제 ChangeStream.tryNext 메서드는 Document 인터페이스 대신 스키마별 TChange 일반 유형을 사용합니다.

자세한 내용은 v5.4.0 릴리스 하이라이트에서 확인하세요.

5.3 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

중요

사용 중단 안내

  • 쿼리와 애그리게이션 결과에 반복해서 액세스할 수 있는 forEach() 커서 메서드는 더 이상 사용되지 않습니다. 여기에서처럼 for await...of 구문을 대신 사용하세요.

  • addUser() 메서드는 더 이상 사용되지 않습니다. 대신 createUser()를 사용하세요.

  • keepAlivekeepAliveInitialDelay 연결 옵션은 더 이상 사용되지 않습니다.

  • 클래스에 중복된 기능이 포함된 메서드는 더 이상 사용되지 BulkWriteResult 않습니다. API 문서 참조 더 이상 사용되지 않는 메서드 및 기본 대안의 전체 목록을 확인하세요.

  • 이제 클라이언트 메타데이터에는 FaaS(Function as a Service) 환경 정보 및 대체 런타임 감지가 포함됩니다.

  • 이제 드라이버는 후행 점 점이 포함된 SRV 기록 주소를 허용합니다.

  • UpdateResult.upsertedId 업데이트된 문서가 없을 때 null을 반환합니다.

자세한 내용은 v5.3.0 릴리스 하이라이트에서 확인하세요.

5.2 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 이제 드라이버는 자동 Queryable Encryption 사용 시 자동으로 Azure 자격 증명을 획득하는 기능을 지원합니다.

자세한 내용은 v5.2.0 릴리스 하이라이트에서 확인하세요.

5.1 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 이제 드라이버는 BSON.Long에 대한 JavaScript bigint의 자동 직렬화를 지원합니다. 또한 useBigInt64 플래그가 true로 전달될 때 서버에서 반환된 BSON.Long 값을 bigint 값으로 역직렬화하는 기능도 지원합니다.

자세한 내용은 v5.1.0 릴리스 하이라이트에서 확인하세요.

경고

v5.0의 긴급 변경 사항

이 드라이버 버전에는 호환성이 손상되는 변경이 도입되었습니다. 이러한 변경 사항의 목록은 업그레이드 가이드의 버전 5.0 호환성이 손상되는 변경 섹션 을 참조하세요.

5.0 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 기본적으로 드라이버는 StrictFilter 유형 주석이 명시적으로 사용되지 않는 한 점 표기법으로 참조된 유형을 더 이상 확인하지 않습니다. 이 변경 사항에 대해 자세히 알아보려면 타입스크립트(Typescript) 기본 사항 페이지를 참조하세요.

    참고

    이 변경 사항은 Typescript에만 적용되며 런타임 시 쿼리 또는 작업에는 영향을 주지 않습니다.

  • 피어 종속성으로 @aws-sdk/credential-providers를 선택적으로 설치합니다.

    • 드라이버는 더 이상 기본적으로 AWS SDK 모듈을 포함하지 않습니다. 다음의 npm 명령을 사용하여 SDK를 설치합니다.

      npm install --save "@aws-sdk/credential-providers@^3.201.0"

      SDK를 설치하면 설치한 SDK 버전이 드라이버와 호환되지 않는 경우 npm에서 알림을 보냅니다. 종속성을 성공적으로 설치하면 드라이버가 AWS SDK 자체를 사용하여 환경의 자격 증명을 관리합니다.

4.17 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다:

  • mongodb-js/saslprep 패키지를 드라이버 종속성으로 추가합니다.

  • Queryable Encryption 기능과의 호환성을 개선합니다.

자세한 내용은 v4.17.0 릴리스 하이라이트에서 확인하세요.

4.16 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다:

  • 드라이버 핸드셰이크 메타데이터에 FaaS(Function-as-a-Service) 플랫폼 정보를 포함합니다.

  • 클라이언트 메타데이터에서 Deno 런타임 사용량을 확인합니다.

자세한 내용은 v4.16.0 릴리스 하이라이트에서 확인하세요.

4.15 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 서비스 계정에 대한 AWS IAM 역할 지원.

자세한 내용은 v4.15.0 릴리스 하이라이트에서 확인하세요.

중요

v4.13에서 v4.14로 업그레이드하기

이 버전에는 v4.13에서 발생한 메모리 유출에 대한 수정 사항이 포함되어 있습니다. v4.14로 업그레이드할 것을 권장합니다.

4.14 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • v4.13에서는 메모리 누수를 수정했습니다.

  • 레거시 로거를 참조하는 메서드 및 옵션은 더 이상 사용되지 않습니다.

4.13 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 드라이버에 네트워크 시간 초과 오류가 발생하면 연결 풀에서 진행 중인 작업 자동 취소.

  • linearizableavailable 읽기 고려 설정과의 충돌을 방지하기 위해 암시적 세션에서 인과적 일관성을 비활성화했습니다.

  • 연결이 끊어질 때마다 드라이버가 MessageStream 인스턴스를 삭제하도록 하여 잠재적인 메모리 누수를 수정했습니다.

중요

드라이버를 버전 4.12.1로 업그레이드하기

4.12.1 Node.js 드라이버에는 프로세스 충돌을 일으킬 수 있는 모니터링 로직의 회귀에 대한 수정 사항이 포함되어 있습니다.

4.12 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • ChangeStream 클래스를 비동기 반복성으로 재정의했습니다. ChangeStream을(를) 기대하는 모든 컨텍스트에서 AsyncIterator 인스턴스를 사용할 수 있습니다.

    • 특히 이제 자바스크립트 for-await 루프에서 change stream을 사용할 수 있습니다.

      const changeStream = myColl.watch();
      for await (const change of changeStream) {
      console.log("Received change: ", change);
      }
  • 드라이버가 이벤트 모니터링을 건너뛰는 경우 서버 모니터링이 수정되었습니다. 이 릴리스에서 드라이버는 모니터링 이벤트를 처리할 때 항상 토폴로지 보기를 업데이트합니다.

  • 드라이버 내부에서 사용되는 데이터 구조의 수정으로 인한 버퍼링 발생과 관련한 성능 향상.

자세한 내용은 v4.12.0 릴리스 하이라이트에서 확인하세요.

MongoDB Server 6.0 버전 이상에 연결할 때 드라이버는 서버 검색 및 모니터링 이벤트 중에 setVersion 설정보다 electionId 설정을 우선시합니다. 이전 버전에서는 우선순위가 뒤바뀌어 있었습니다.

선택적 aws-sdk/credential-providers 종속성을 설치하면 드라이버는 AWS SDK를 사용하여 환경에서 AWS 자격 증명을 검색합니다.

이 동작에 대해 자세히 알아보려면 인증 메커니즘 가이드의 MONGODB-AWS 섹션을 참조하세요.

이 릴리스에는 상호 재귀 컬렉션 스키마 형식에 대한 추가 지원이 포함되어 있습니다. 드라이버는 또한 이번 릴리스에서 최대 8단계까지의 점 표기법 쿼리에 대한 유형 안전성을 제공합니다. 8 단계 이상의 깊이에서 Typescript는 코드를 성공적으로 컴파일하지만 유형 안전성을 제공하지 않습니다. 재귀형에 대한 이러한 단계 제한은 현재 TypeScript의 제한 사항과 동일합니다.

다음과 같은 상호 재귀 유형을 포함하는 Collection<Author> 유형의 컬렉션이 있다고 가정합니다.

interface Author {
name: string;
bestBook: Book;
}
interface Book {
title: string;
author: Author;
}

TypeScript는 최대 8번째 깊이까지 유형 검사를 적용합니다. 다음 코드는 name 속성 값이 string 유형이어야 하기 때문에 TypeScript 컴파일 오류를 발생시킵니다.

myColl.findOne({ 'bestBook.author.bestBook.title': 25 });

8단계보다 크거나 같은 깊이에서 TypeScript는 코드를 컴파일하지만 더 이상 유형 검사를 수행하지 않습니다. 예를 들어, 다음 코드에서는 string 속성에 number를 할당하지만 참조된 속성의 단계가 10이므로 컴파일 오류가 발생하지는 않습니다.

myColl.findOne({
'bestBook.author.bestBook.author.bestBook.author.bestBook.author.bestBook.author.name': 25
});

자세한 내용은 v4.11.0 릴리스 하이라이트에서 확인하세요.

4.10 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 콜백 사용 중단

    • 콜백은 이제 더 이상 사용되지 않으며 프로미스로 대체됩니다. 콜백은 다음 주요 릴리스에서 제거될 예정입니다. 노드 드라이버 팀은 가능한 경우 프로미스로 마이그레이션할 것을 권장합니다.

      • async/await 구문을 사용합니다.

      • Node.js 콜백화 유틸리티를 사용합니다.

        require('util').callbackify(() => myColl.findOne())(callback)
      • then 사용 구문:

        myColl.findOne().then(res => callback(null, res), err => callback(err))
    • 대규모 코드베이스에서 Promises로 마이그레이션할 수 없는 경우 콜백 지원 옵션이 있는 Node.js 드라이버(레거시)를 사용할 수 있습니다.

자세한 내용은 v4.10.0 릴리스 주요 내용을 참조하세요.

4.9 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 유형 정의 내 writeConcern 옵션과의 불일치 문제 수정.

  • 자동 UUID 지원이 추가된 최신 BSON 릴리스가 포함되어 있습니다. 여기에서 BSON 릴리스 노트를 참조하세요.

자세한 내용은 v4.9.0 릴리스 주요 내용을 참조하세요.

중요

v4.8.0에서 v4.8.1로 업그레이드하기

버전 4.8.1은 버전 4.8.0에서 발생한 유형 회귀 문제를 수정합니다. v4.8.1로 업그레이드하면 $set 또는 $setOnInsert 연산자로 업데이트를 수행할 때 _id 값과 하위 문서를 지정할 수 있습니다.

4.8 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 업데이트 필터 내 중첩된 키에 대한 자동 완성 및 유형 안전성 기능이 추가되었습니다.

  • client.startSession() 이제 MongoDB에 연결하기 전에 호출할 수 있습니다.

  • estimatedDocumentCount() 메서드가 이제 댓글을 받을 수 있습니다.

자세한 내용은 v4.8.0 릴리스 주요 내용을 참조하세요.

4.7 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 이제 MongoClient.connect() 메서드는 MongoDB 인스턴스에 연결할 때 선택 사항입니다.

  • Zstandard 압축 알고리즘으로 메시지를 압축하는 기능

  • maxConnecting 연결 옵션에 대한 지원 추가

  • Change stream 문서에 업데이트 전과 후의 문서를 표시하는 기능

  • 클러스터 간 복제와 관련된 새로운 change stream 필드에 대한 지원이 추가되었습니다.

  • estimatedDocumentCount() 메서드에서 $count 데이터베이스 명령 사용

  • AWS Lambda Init 단계에서 MongoDB 연결 개선

중요

사용 중단 안내

ResumeOptions 인터페이스는 더 이상 사용하지 않습니다. 대신 ChangeStreamCursorOptions 인터페이스를 사용합니다.

4.6 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • TypeScript에서 ChangeStreamDocument을(를) 개선했습니다.

  • 서버 전체의 로드를 기준으로 서버 선택을 균등하게 분배합니다.

자세한 내용은 v4.6.0 릴리스 주요 내용을 참조하세요.

GitHub의 v4.5.0 릴리즈 하이라이트를 참조하세요.

4.4 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • CSFLE 사용 시 KMIP 제공자 지원.

  • CSFLE를 사용할 경우의 TLS 지원.

  • 호스트 이름 정규화는 GSSAPI 사용 시 "none", "forward", "forwardAndReverse"를 authMechanismProperties로 허용합니다.

  • 드라이버 4.0.0 릴리스에서는, 더 이상 사용되지 않는 collection.count() 메서드가 collection.countDocuments()처럼 동작하도록 의도치 않게 변경되었습니다. 이 릴리스에서는 collection.count() 메서드가 레거시 동작과 일치하도록 업데이트되었습니다.

    • 쿼리가 제공되면 collection.count()collection.countDocuments()와 동일하게 동작하여 컬렉션 스캔을 수행합니다.

    • 쿼리가 제공되지 않으면 collection.count()collection.estimatedDocumentCount()와 동일하게 작동하며 collection 메타데이터를 사용합니다.

    중요

    사용 중단 안내

    cursor.count() 메서드는 더 이상 사용되지 않으며 다음 주요 버전에서 collection.count()와 함께 제거될 예정입니다. 대신 collection.estimatedDocumentCount() 또는 collection.countDocuments() 메서드를 사용할 수 있습니다.

4.3 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

4.2 Node.js 드라이버 릴리스의 새로운 기능에는 다음 내용이 포함됩니다.

4.1 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • 베타 서버리스 플랫폼을 포함한 모든 클러스터 유형에 대한 로드 밸런싱 연결 지원이 추가되었습니다.

  • ClientSession이(가) 클러스터 시간을 업데이트해야 하는지 여부를 결정하는 advanceClusterTime() 메서드에 대한 지원이 추가되었습니다.

경고

v4.0의 주요 변경 사항

이 드라이버 버전에는 호환성이 손상되는 변경이 도입되었습니다. 이러한 변경 사항 목록은 업그레이드 안내서의 버전 4.0 호환성이 손상되는 변경 섹션을 참조하세요.

4.0 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

중요

이 드라이버 릴리스에서는 더 이상 사용되지 않는 collection.count() 메서드가 의도치 않게 collection.countDocuments()처럼 동작하는 문제가 발생했습니다. 이 동작은 버전 4.4에서 수정되었습니다.

  • 드라이버를 TypeScript로 마이그레이션했습니다. 이제 이를 지원하는 편집기에서 유형 힌팅 및 인텔리센스 기능을 활용하여 MongoDB 애플리케이션을 개발할 수 있습니다. 순수 JavaScript 프로젝트에서도 이 작업의 이점을 누려보세요.

  • 이 버전에서 사용하는 기본 BSON 라이브러리는 이제 TypeScript로 마이그레이션됩니다.

  • 이제 인라인 문서의 서식이 통일되어 편집기의 표시가 개선됩니다.

  • 커뮤니티 유형 @types/mongodb의 사용자인 경우 코드베이스에서 해당 유형을 채택하는 데 문제가 있을 수 있습니다. TypeScript 내 코드베이스 작성 관련 세부 사항으로 인해 유형의 일대일 일치를 달성할 수 없습니다.

요청하고 싶은 TypeScript 관련 기능을 알려 주세요. 여기에서 JIRA 프로젝트에 대한 아이디어를 제출해 주세요.

이제 드라이버 버전 4에서 지원되는 Node.js 최소 버전은 v12.9 이상입니다. 3.x 브랜치에 대한 지원은 사용자가 업그레이드할 시간을 허용하기 위해 2022년 중반까지 계속됩니다.

참고

3.x는 Node.js v4까지 지원합니다.

이제 커서 구현이 업데이트되어 작업 실행 전후에 무엇이 가능한지 명확하게 알 수 있습니다.

예제

const fc = myColl.find({a: 2.3}).skip(1)
for await (const doc of fc) {
console.log(doc)
fc.limit(1) // incorrect usage, cursor already executing
}

커서 실행이 시작된 후 설정을 적용하면 커서에 오류가 발생하는 방식에 대한 불일치가 있었습니다. 이제 잘못된 상태에서 작업을 적용하려고 하면 커서에서 다음과 유사한 오류가 발생합니다.

MongoError: Cursor is already initialized

  • 영향을 받는 클래스:

    • AbstractCursor

    • FindCursor

    • AggregationCursor

    • ChangeStreamCursor (ChangeStream의 기본 커서입니다.)

    • ListCollectionsCursor

커서 유형이 더 이상 Readable을(를) 직접 확장하지 않습니다. 커서 유형은 cursor.stream()을(를) 호출하여 스트림으로 변환되어야 합니다.

예제

const cursor = myColl.find({});
const stream = cursor.stream();
stream.on("data", data => console.log);
stream.on("error", () => client.close());

수동 반복에는 hasNext()next()를 사용하세요. 비동기 반복에는 for await of 구문 또는 Promise 헬퍼를 사용합니다.

유형 힌트를 사용하면 MongoClient에 전달된 옵션이 열거되고 검색이 가능해집니다. 앱을 올바른 상태로 빠르게 시작하고 실행할 수 있도록 호환되지 않는 설정에 대한 조기 경고를 제공하기 위해 드라이버의 모든 옵션을 처리하고자 많은 노력을 기울였습니다.

  • checkServerIdentity 더 이상 기본 노드 API로 전달되기 전에 검사되지 않습니다. 이전에는 허용되는 값이 false 또는 함수였습니다. 이제는 인수가 함수여야 합니다. 부울(boolean)을 지정하면 오류가 발생합니다.

  • 더 이상 useUnifiedTopology 또는 useNewUrlParser을 지정할 필요가 없습니다.

이 메서드는 컬렉션이 존재하지 않는 경우 오류를 반환하는 strict 옵션을 더 이상 지원하지 않습니다. 컬렉션의 존재를 확인하려면 대신 listCollections() 메서드를 사용하세요.

예제

const collections = (await db.listCollections({}, { nameOnly: true })
.toArray()).map(
({name}) => name
);
if (!collections.includes(myNewCollectionName)) {
throw new Error(`${myNewCollectionName} doesn't exist`);
}

BulkWriteError 이제 이름이 MongoBulkWriteError(으)로 변경되었습니다.

쓰기를 수행하는 일괄 작업 실행 시 설정에 따라 오류가 발생할 수 있습니다. 일괄 작업의 오류를 테스트할 때 새 클래스 이름 MongoBulkWriteError를 가져옵니다.

DB 더 이상 EventEmitter가 아닙니다. MongoClient 인스턴스에서 직접 이벤트를 수신 대기합니다.

Collection.group() 도우미는 MongoDB 3.4 이후 더 이상 사용되지 않으며 이제 이 제거되었습니다. 대신 집계 파이프라인 $group 연산자를 사용합니다.

  • gssapiServiceName 이제 제거됩니다. authMechanismProperties.SERVICE_NAME 사용 URI에서 또는 의 MongoClientOptions 옵션으로.

    예제

    ?authMechanismProperties.SERVICE_NAME
    // or
    new MongoClient(url, { SERVICE_NAME: "alternateServiceName" })
  • 사용자 이름과 비밀번호를 옵션으로 지정하는 것은 URI 또는 MongoClientOptions의 옵션으로만 지원됩니다.

    예제

    new MongoClient("mongodb://username:password@<host><port>")
    // or
    new MongoClient(url, { auth: { username: "<>", password: "<>" } })

GridStore API(3.x에서 이미 사용 중단됨)가 이제 GridFSBucket으로 대체되었습니다. GridFS에 대한 자세한 내용은 mongodb 매뉴얼을 참조하세요.

다음은 동등한 작업을 나타내는 몇 가지 코드 조각입니다.

예제

// old way
const gs = new GridStore(db, filename, mode[, options])
// new way
const bucket = new GridFSBucket(client.db('test')[,options])

GridFSBucket은 Node.js 스트림 API를 사용합니다. startend 옵션을 사용하여 GridFSBucket에서 다운로드 스트림을 생성하고 파일 검색을 복제할 수 있습니다.

예제

bucket.openDownloadStreamByName(filename, { start: 0, end: 100 })

예제

await client.connect();
const filename = 'test.txt'; // whatever local file name you want
const db = client.db();
const bucket = new GridFSBucket(db);
fs.createReadStream(filename)
.pipe(bucket.openUploadStream(filename))
.on('error', console.error)
.on('finish', () => {
console.log('done writing to db!');
bucket
.find()
.toArray()
.then(files => {
console.log(files);
bucket
.openDownloadStreamByName(filename)
.pipe(fs.createWriteStream('downloaded_' + filename))
.on('error', console.error)
.on('finish', () => {
console.log('done downloading!');
client.close();
});
});
});

참고

GridFSBucket GridStore처럼 닫을 필요가 없습니다.

예제

// old way
GridStore.unlink(db, name, callback);
// new way
bucket.delete(file_id);

GridStore 인스턴스에서 액세스할 수 있던 파일 메타데이터는 버킷을 쿼리해 찾을 수 있습니다.

예제

const fileMetaDataList: GridFSFile[] = bucket.find({}).toArray();
  • 이제 mongod에 연결하면 내부적으로 unifiedTopology만이 관리됩니다. 이 버전과 이전 버전의 차이점은 여기에 자세히 설명되어 있습니다.

  • 더 이상 useUnifiedTopology 또는 useNewUrlParser을 지정할 필요가 없습니다.

  • 초기화되지 않은 복제본 세트 노드에 연결하려면 새 directConnection 옵션 을 사용해야 합니다.

이제 세분화된 상세 설명 모드가 지원됩니다. 각 모드에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

이제 instrument() 메서드가 제거되었습니다. 대신 명령 모니터링을 사용하세요. 자세한 내용은 명령어 모니터링에 대한 가이드를 참조하세요.

3.7 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • useUnifiedTopology 옵션을 활성화하는 동안 로드 밸런서 모드 지원이 추가되었습니다.

  • useUnifiedTopology 옵션을 활성화하는 동시에 스테이블 API 지원이 추가되었습니다.

3.6 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.

  • AWS(Amazon Web Services) IAM(Identity and Access Management) 자격 증명을 사용하는 MONGODB-AWS 인증 메커니즘에 대한 지원이 추가되었습니다.

  • find() 메서드는 RAM에서 실행하는 데 너무 많은 메모리가 필요한 정렬에 대한 allowDiskUse()를 지원합니다

  • update() 및 replaceOne() 메서드는 인덱스 힌트를 지원합니다

  • 토폴로지 변경 및 페일오버(failover) 이벤트에 대한 복구 시간 단축

  • 기본값 writeConcern의 유효성 검사 테스트가 개선되었습니다.

  • 인증을 위한 서버 왕복 횟수가 줄어들어 연결 설정 속도가 빨라집니다.

  • SCRAM(Salted Challenge Response Authentication Mechanism) 대화 단축

  • 여러 문서 트랜잭션에 대한 collection 및 인덱스를 만드는 기능

  • 백그라운드에서 컬렉션에 대한 유효성 검사 실행

← 빠른 참조