개요
이 섹션에는 사용 가능한 각 빌더 사용하는 방법에 대한 가이드가 포함되어 있으며 Java Reactive Streams 운전자 빌더 클래스가 제공하는 유틸리티를 보여줍니다.
Java Reactive Streams 운전자 CRUD 작업 및 애그리게이션 API 위한 빌더 클래스가 포함되어 있습니다. 정적 유틸리티 메서드를 사용하면 쿼리 및 기타 문서를 보다 효율적으로 빌드 수 있습니다.
빌더를 사용하는 이유는 무엇입니까?
빌더 클래스를 사용하면 다음 기능을 활용할 수 있습니다.
개발 중 오류를 찾는 Java 컴파일러
검색 및 코드 완성을 위한 IDE
빌더 클래스를 활성화 Java 컴파일러와 IDE에서 철자가 잘못된 연산자 또는 매개변수 누락과 같은 오류를 조기에 포착할 수 있습니다. 대신 MongoDB 셸 이나 일반 Java 사용하는 경우 연산자를 문자열로 쓰기 (write) 하고 문제에 대한 시각적 표시를 얻을 수 없으므로 이러한 오류는 컴파일 시간이 아닌 런타임으로 진행됩니다.
빌더 클래스를 사용하면 연산자를 메서드로 쓰기 (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();