개요
이 섹션에는 사용 가능한 각 빌더를 사용하는 방법에 대한 가이드가 포함되어 있으며 Java Reactive Streams 드라이버 빌더 클래스가 제공하는 유틸리티를 보여줍니다.
Java Reactive Streams 드라이버에는 CRUD 작업 및 집계 API를 위한 빌더 클래스가 포함되어 있습니다. 정적 유틸리티 메서드를 사용하면 쿼리 및 기타 문서를 더 효율적으로 빌드할 수 있습니다.
참고
입력 유효성 검사
빌더 클래스는 입력 값을 기본 MongoDB 작업에 전달하며 해당 값을 삭제하지 않습니다. 빌더 메서드에 전달하기 전에 애플리케이션 에서 입력한 내용의 유효성을 검사하세요.
빌더를 사용하는 이유는 무엇입니까?
빌더 클래스를 사용하면 다음 기능을 활용할 수 있습니다.
개발 중 오류를 찾기 위한 Java 컴파일러
검색 및 코드 완성을 위한 IDE
빌더 클래스를 사용하면 Java 컴파일러와 IDE가 철자가 틀린 연산자나 누락된 매개변수와 같은 오류를 조기에 발견할 수 있습니다. 대신 MongoDB shell이나 일반 Java를 사용하는 경우 연산자를 문자열로 작성하게 되어 시각적으로 문제를 확인할 수 없으며, 이로 인해 해당 오류가 컴파일 타임이 아닌 런타임에 발생하게 됩니다.
빌더 클래스를 사용하면 연산자를 메서드로 쓰기 (write) IDE에서 코드에 오류가 있는지 여부를 즉시 표시할 수 있습니다. 개발하는 동안 IDE는 사용할 수 있는 메서드를 표시하고 자리 표시자 매개 변수를 사용하여 코드를 완성할 수도 있습니다.
시나리오 예시
users 컬렉션 에서 다음 기준을 충족하는 모든 사용자에게 마케팅 이메일 보내려고 한다고 가정해 보겠습니다.
gender필드 값이"female"인 사용자age필드 의 값이29보다 큰 사용자
또한 이메일 주소만 반환하는 쿼리 도 필요합니다.
users 컬렉션의 문서는 다음 클래스에 의해 모델링됩니다.
record User( @BsonId ObjectId id, String gender, int age, String email )
MongoDB Shell 사용
다음 코드는 MongoDB Shell 에서 쿼리 수행하는 데 사용하는 명령을 제공합니다.
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
빌더를 사용하지 않고
다음 코드는 Java Reactive Streams 드라이버에서 빌더 없이 생성하는 찾기 작업을 제공합니다.
Bson filter = new Document().append("gender", "female").append("age", new Document().append("$gt", 29)); Bson projection = new Document().append("_id", 0).append("email", 1); Flux.from(collection.find(filter).projection(projection)) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
이 경우 필터하다 에 "\$gt" 연산자 작성할 때 오류를 쉽게 포함할 수 있지만 IDE는 런타임에만 관련 오류를 반환합니다.
빌더 사용
다음 코드는 Java Reactive Streams 드라이버에서 빌더를 사용하여 생성하는 찾기 작업을 제공합니다.
import static com.mongodb.client.model.Filters.*; import static com.mongodb.client.model.Projections.*;
Bson filter = and(eq("gender", "female"), gt("age", 29)); Bson projection = fields(excludeId(), include("email")); Flux.from(collection.find(filter).projection(projection)) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();