Builders
On this page
Overview
This section includes guides on how to use each of the available builders, and demonstrates the utility the MongoDB Java driver builder classes provide.
The Java driver provides classes to simplify the process for developers to use CRUD operations and the Aggregation API. The static utility methods allow you to build a query more efficiently.
Why Use Builders?
Using the builders class, you leverage the power of:
The Java compiler and the IDE to find errors during development
The IDE for discovery and code completion
When using builders, the Java compiler and the IDE catch errors such as misspelled operators early on. When using the MongoDB shell or plain Java, you write operators as strings and get no visual sign of a problem, pushing these errors to runtime instead of compile time
With the builder classes, you write operators as methods. The IDE instantly underlines and gives you a red bar on the right indicating something is wrong. While developing, the IDE also shows you the methods you can use. It automatically completes your code with placeholder parameters once you select which method you want to use.
Scenario
Imagine we want to send a marketing email to all users in our users
collection with the following criteria:
Users that identify as "female" gender
Users that are older than "29"
We only want their email address, so we want to ensure our query doesn't return data we pay bandwidth costs for but don't need.
Using the MongoDB Shell
collection.find({ "gender": "female", "age" : { "$gt": 29 }}, { "_id": 0, "email": 1 })
Without Using Builders
Bson filter = new Document().append("gender", "female").append("age", new Document().append("$gt", 29)); Bson projection = new Document().append("_id", 0).append("email", 1); collection.find(filter).projection(projection);
Using Builders
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")); collection.find(filter).projection(projection);
Available Builders
Filters for building query filters.
Projections for building projections.
Sorts for building sort criteria.
Updates for building updates.
Aggregates for building aggregation pipelines.
Indexes for creating index keys.