새로운 기능
이 페이지의 내용
다음 버전의 새로운 기능에 대해 알아보세요:
4.17의 새로운 기능
4.17 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다:
mongodb-js/saslprep
패키지를 드라이버 종속성으로 추가합니다.Queryable Encryption 기능과의 호환성을 개선합니다.
자세한 내용은 v4.17.0 릴리스 하이라이트에서 확인하세요.
4.16의 새로운 기능
4.16 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다:
드라이버 핸드셰이크 메타데이터에 FaaS(Function-as-a-Service) 플랫폼 정보를 포함합니다.
클라이언트 메타데이터에서 Deno 런타임 사용량을 식별합니다.
자세한 내용은 v4.16.0 릴리스 하이라이트에서 확인하세요.
4.15의 새로운 기능
4.15 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
서비스 계정에 대한 AWS IAM 역할 지원.
자세한 내용은 v4.15.0 릴리스 하이라이트에서 확인하세요.
4.14 버전의 새로운 기능
중요
v4.13에서 v4.14로 업그레이드하기
이 버전에는 v4.13에서 발생한 메모리 유출에 대한 수정 사항이 포함되어 있습니다. v4.14로 업그레이드할 것을 권장합니다.
4.14 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
v4.13에서는 메모리 누수를 수정했습니다.
레거시 로거를 참조하는 메서드 및 옵션은 더 이상 사용되지 않습니다.
4.13의 새로운 기능
4.13 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
드라이버에 네트워크 시간 초과 오류가 발생하면 연결 풀에서 진행 중인 작업 자동 취소.
linearizable
및available
읽기 고려 설정과의 충돌을 방지하기 위해 암시적 세션에서 인과적 일관성을 비활성화했습니다.연결이 끊어질 때마다 드라이버가
MessageStream
인스턴스를 삭제하도록 하여 잠재적인 메모리 누수를 수정했습니다.
4.12의 새로운 기능
중요
드라이버를 버전 4.12.1로 업그레이드하기
4.12.1 Node.js 드라이버에는 프로세스 충돌을 일으킬 수 있는 모니터링 로직의 회귀에 대한 수정 사항이 포함되어 있습니다.
4.12 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
ChangeStream
클래스를 비동기 반복성으로 재정의했습니다.ChangeStream
을(를) 기대하는 모든 컨텍스트에서AsyncIterator
인스턴스를 사용할 수 있습니다.특히 이제 자바스크립트
for-await
루프에서 변경 스트림을 사용할 수 있습니다.const changeStream = collection.watch(); for await (const change of changeStream) { console.log("Received change: ", change); }
드라이버가 이벤트 모니터링을 건너뛰는 경우 서버 모니터링이 수정되었습니다. 이 릴리스에서 드라이버는 모니터링 이벤트를 처리할 때 항상 토폴로지 보기를 업데이트합니다.
드라이버 내부에서 사용되는 데이터 구조의 수정으로 인한 버퍼링 발생과 관련한 성능 향상.
자세한 내용은 v4.12.0 릴리스 하이라이트에서 확인하세요.
4.11의 새로운 기능
모니터링 우선순위 지정
MongoDB Server 6.0 버전 이상에 연결할 때 드라이버는 서버 검색 및 모니터링 이벤트 중에 setVersion
설정보다 electionId
설정을 우선시합니다. 이전 버전에서는 우선순위가 뒤바뀌어 있었습니다.
AWS 인증 변경 사항
선택적 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 컴파일 오류를 발생시킵니다.
collection.findOne({ 'bestBook.author.bestBook.title': 25 })
8단계보다 크거나 같은 깊이에서 TypeScript는 코드를 컴파일하지만 더 이상 유형 검사를 수행하지 않습니다. 예를 들어, 다음 코드에서는 string
속성에 number
를 할당하지만 참조된 속성의 단계가 10이므로 컴파일 오류가 발생하지는 않습니다.
collection.findOne({ 'bestBook.author.bestBook.author.bestBook.author.bestBook.author.bestBook.author.name': 25 })
자세한 내용은 v4.11.0 릴리스 하이라이트에서 확인하세요.
4.10 버전의 새로운 기능
4.10 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
콜백 사용 중단
콜백은 이제 더 이상 사용되지 않으며 프로미스로 대체됩니다. 콜백은 다음 주요 릴리스에서 제거될 예정입니다. 노드 드라이버 팀은 가능한 경우 프로미스로 마이그레이션할 것을 권장합니다.
대규모 코드베이스에서 Promises로 마이그레이션할 수 없는 경우,선택적 콜백 지원이 포함된 MongoDB Node.js 드라이버를 사용할 수 있습니다. 패키지.
자세한 내용은 v4.10.0 릴리스 주요 내용을 참조하세요.
4.9의 새로운 기능
4.9 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
유형 정의 내
writeConcern
옵션과의 불일치 문제 수정.자동 UUID 지원이 추가된 최신 BSON 릴리스가 포함되어 있습니다. 여기에서 BSON 릴리스 노트를 참조하세요.
자세한 내용은 v4.9.0 릴리스 주요 내용을 참조하세요.
4.8의 새로운 기능
중요
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의 새로운 기능
4.7 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
이제
MongoClient.connect()
메서드는 MongoDB 인스턴스에 연결할 때 선택 사항입니다.Zstandard
압축 알고리즘으로 메시지를 압축하는 기능maxConnecting
연결 옵션에 대한 지원 추가변경 스트림 문서에 업데이트 전과 후의 문서를 표시하는 기능
클러스터 간 복제와 관련된 새로운 변경 스트림 필드에 대한 지원이 추가되었습니다.
estimatedDocumentCount()
메서드에서$count
데이터베이스 명령 사용AWS Lambda Init 단계에서 MongoDB 연결 개선
중요
사용 중단 안내
ResumeOptions
인터페이스는 더 이상 사용하지 않습니다. 대신 ChangeStreamCursorOptions
인터페이스를 사용합니다.
4.6의 새로운 기능
4.6 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
TypeScript에서
ChangeStreamDocument
을(를) 개선했습니다.서버 전체의 로드를 기준으로 서버 선택을 균등하게 분배합니다.
자세한 내용은 v4.6.0 릴리스 주요 내용을 참조하세요.
4.5의 새로운 기능
GitHub의 v4.5.0 릴리즈 하이라이트를 참조하세요.
4.4의 새로운 기능
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의 새로운 기능
4.3 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
SOCKS5 지원
UTF-8 유효성 검사를 비활성화하는 옵션
중첩된 문서에 대한 유형 추론
4.2의 새로운 기능
4.2 Node.js 드라이버 릴리스의 새로운 기능에는 다음 내용이 포함됩니다.
srvMaxHosts
및srvServiceName
DNS 시드 목록 연결 옵션
4.1의 새로운 기능
4.1 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
베타 서버리스 플랫폼을 포함한 모든 클러스터 유형에 대한 로드 밸런싱 연결 지원이 추가되었습니다.
ClientSession
이(가) 클러스터 시간을 업데이트해야 하는지 여부를 결정하는advanceClusterTime()
메서드에 대한 지원이 추가되었습니다.
4.0의 새로운 기능
중요
이 드라이버 릴리스에서는 더 이상 사용되지 않는 collection.count()
메서드가 의도치 않게 collection.countDocuments()
처럼 동작하는 문제가 발생했습니다. 이 동작은 버전 4.4에서 수정되었습니다.
4.0 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
TypeScript
드라이버를 TypeScript로 마이그레이션했습니다. 이제 이를 지원하는 편집기에서 유형 힌팅 및 인텔리센스 기능을 활용하여 MongoDB 애플리케이션을 개발할 수 있습니다. 순수 JavaScript 프로젝트에서도 이 작업의 이점을 누려보세요.
이 버전에서 사용하는 기본 BSON 라이브러리는 이제 TypeScript로 마이그레이션됩니다.
이제 인라인 문서의 서식이 통일되어 편집기의 표시가 개선됩니다.
커뮤니티 유형
@types/mongodb
의 사용자인 경우 코드베이스에서 해당 유형을 채택하는 데 문제가 있을 수 있습니다. TypeScript 내 코드베이스 작성 관련 세부 사항으로 인해 유형의 일대일 일치를 달성할 수 없습니다.
요청하고 싶은 TypeScript 관련 기능을 알려 주세요. 여기에서 JIRA 프로젝트에 대한 아이디어를 제출해 주세요.
주요 변경사항
Node.js 버전
Node.js 지원 최소 버전은 이제 드라이버 버전 4에 대해 v12.9 이상입니다. 3.x 분기에 대한 지원은 업그레이드할 수 있는 시간을 허용하기 위해 2022년 여름까지 계속됩니다.
참고
3.x는 Node.js v4까지 지원합니다.
커서 개선 사항
이제 커서 구현이 업데이트되어 작업 실행 전후에 무엇이 가능한지 명확하게 알 수 있습니다.
예시
const fc = collection.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
커서 스트림 API
커서 유형이 더 이상 Readable
을(를) 직접 확장하지 않습니다. 커서 유형은 cursor.stream()
을(를) 호출하여 스트림으로 변환되어야 합니다.
예시
const cursor = collection.find({}) const stream = cursor.stream() stream.on("data", data => console.log) stream.on("error", () => client.close())
수동 반복에는 hasNext()
및 next()
를 사용하세요. 비동기 반복에는 for await of
구문 또는 Promise
헬퍼를 사용합니다.
MongoClientOptions
인터페이스
유형 힌트를 사용하면 MongoClient
에 전달된 옵션이 열거되고 검색이 가능해집니다. 앱을 올바른 상태로 빠르게 시작하고 실행할 수 있도록 호환되지 않는 설정에 대한 조기 경고를 제공하기 위해 드라이버의 모든 옵션을 처리하고자 많은 노력을 기울였습니다.
checkServerIdentity
더 이상 기본 노드 API로 전달되기 전에 검사되지 않습니다. 이전에는 허용되는 값이false
또는 함수였습니다. 이제는 인수가 함수여야 합니다. 부울(boolean)을 지정하면 오류가 발생합니다.더 이상
useUnifiedTopology
또는useNewUrlParser
을 지정할 필요가 없습니다.
createCollection()
이 메서드는 컬렉션이 존재하지 않는 경우 오류를 반환하는 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
BulkWriteError
이제 이름이 MongoBulkWriteError
(으)로 변경되었습니다.
쓰기를 수행하는 일괄 작업 실행 시 설정에 따라 오류가 발생할 수 있습니다. 일괄 작업의 오류를 테스트할 때 새 클래스 이름 MongoBulkWriteError
를 가져옵니다.
DB
DB
더 이상 EventEmitter
가 아닙니다. MongoClient
인스턴스에서 직접 이벤트를 수신 대기합니다.
Collection.group()
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
제거
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를 사용합니다. start
및 end
옵션을 사용하여 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의 새로운 기능
3.7 Node.js 드라이버 릴리스의 새로운 기능은 다음과 같습니다.
useUnifiedTopology
옵션을 활성화하는 동안 로드 밸런서 모드 지원이 추가되었습니다.useUnifiedTopology
옵션을 활성화하는 동시에 Stable API 지원이 추가되었습니다.
3.6의 새로운 기능
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 및 인덱스를 만드는 기능
백그라운드에서 컬렉션에 대한 유효성 검사 실행