복합 작업
개요
대부분의 데이터베이스 요청은 데이터베이스에서 데이터를 읽거나 데이터베이스에 데이터를 씁니다. 그러나 데이터를 읽고 쓰는 단일 작업이 필요한 인스턴스가 있을 수 있습니다.
복합 작업 은 읽기 및 쓰기 작업을 단일 원자성 문으로 결합하므로 읽기와 후속 쓰기 사이에 데이터가 변경될 가능성이 없습니다.
각 작업을 별도로 실행하면 다른 요청으로 인해 읽기 작업과 쓰기 작업 사이에 데이터가 변경될 수 있습니다. 이러한 데이터 변경으로 인해 작업이 성공하지 못할 수도 있지만 오류 처리가 더 어려워질 수 있습니다. 애플리케이션이 프로세스의 어느 단계에서든 잠재적인 오류를 처리할 때 부서지기 쉬워지고 테스트하기 어려울 수 있습니다.
내장 메서드
Node.js 드라이버는 복합 작업을 수행하기 위해 다음과 같은 메서드를 제공합니다.
이러한 메서드는 구성 가능한 정렬 및 프로젝션 옵션이 있는 선택적 options
객체 를 허용합니다.
includeResultMetadata
옵션을 설정하여 이러한 각 메서드의 반환 형식을 지정할 수도 있습니다. 이 옵션에 대한 자세한 내용은 본 가이드의 includeResultMetadata 옵션 섹션을 참조하세요.
findOneAndUpdate()
및 findOneAndDelete()
메서드는 returnDocument
설정을 사용하여 메서드가 수정된 문서의 업데이트 전 버전을 반환할지, 업데이트 후 버전을 반환할지 여부를 지정합니다.
includeResultMetadata 옵션
includeResultMetadata
옵션은 복합 메서드의 반환 유형을 결정합니다.
이 설정의 기본값은 false
이며, 이는 각 메서드가 일치하는 문서를 반환한다는 의미입니다. 일치하는 문서가 없으면 각 메서드는 null
을 반환합니다. includeResultMetadata
를 true
로 설정하면 메서드는 발견된 문서와 메타데이터가 포함된 ModifyResult
유형을 반환합니다.
collection에 다음 문서만 포함되어 있다고 가정해 보겠습니다.
{ _id: 1, x: "on" }
다음 표는 includeResultMetadata
옵션 값이 findOneAndDelete()
메서드의 반환 유형을 어떻게 변경하는지 보여줍니다.
옵션 값 | 구문 및 출력 | ||||
---|---|---|---|---|---|
기본값입니다: false | 문서 일치
일치하는 문서가 없습니다.
| ||||
true |
|