The MongoDB Synchronous Driver for Java providing blocking I/O patterns for database operations
—
Factory methods and client interfaces for establishing and managing MongoDB connections with various configuration options.
Factory class providing static methods to create MongoClient instances with different configuration approaches.
/**
* Factory for MongoClient instances
*/
public final class MongoClients {
/**
* Creates a client with default connection string "mongodb://localhost:27017"
* @return the MongoDB client
*/
public static MongoClient create();
/**
* Creates a client with the given connection string
* @param connectionString the MongoDB connection string
* @return the MongoDB client
*/
public static MongoClient create(String connectionString);
/**
* Creates a client with the given connection string object
* @param connectionString the MongoDB ConnectionString object
* @return the MongoDB client
*/
public static MongoClient create(ConnectionString connectionString);
/**
* Creates a client with detailed settings
* @param settings the MongoDB client settings
* @return the MongoDB client
*/
public static MongoClient create(MongoClientSettings settings);
/**
* Creates a client with connection string and driver information
* @param connectionString the MongoDB connection string
* @param mongoDriverInformation optional driver metadata
* @return the MongoDB client
*/
public static MongoClient create(ConnectionString connectionString,
MongoDriverInformation mongoDriverInformation);
/**
* Creates a client with settings and driver information
* @param settings the MongoDB client settings
* @param mongoDriverInformation optional driver metadata
* @return the MongoDB client
*/
public static MongoClient create(MongoClientSettings settings,
MongoDriverInformation mongoDriverInformation);
}Usage Examples:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.MongoClientSettings;
import com.mongodb.ConnectionString;
// Default localhost connection
MongoClient client1 = MongoClients.create();
// Connection string
MongoClient client2 = MongoClients.create("mongodb://user:pass@host:27017/mydb");
// ConnectionString object with options
ConnectionString connString = new ConnectionString("mongodb://host:27017");
MongoClient client3 = MongoClients.create(connString);
// Detailed settings
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("mongodb://host:27017"))
.readPreference(ReadPreference.secondary())
.writeConcern(WriteConcern.MAJORITY)
.build();
MongoClient client4 = MongoClients.create(settings);Main client interface extending MongoCluster and providing connection lifecycle management.
/**
* Main MongoDB client interface for connection management
*/
public interface MongoClient extends MongoCluster, AutoCloseable {
/**
* Releases all resources associated with this client
*/
void close();
/**
* Gets information about the cluster this client is connected to
* @return cluster description containing server information
*/
ClusterDescription getClusterDescription();
}Usage Examples:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.connection.ClusterDescription;
// Create and use client
try (MongoClient client = MongoClients.create("mongodb://localhost:27017")) {
// Get cluster information
ClusterDescription cluster = client.getClusterDescription();
System.out.println("Connected to: " + cluster.getServerDescriptions());
// Use client for operations...
MongoDatabase db = client.getDatabase("mydb");
} // Automatically closes connectionBase interface providing cluster-level operations accessible through MongoClient.
/**
* Interface for cluster-level MongoDB operations
*/
public interface MongoCluster {
/**
* Gets a database instance for the given name
* @param databaseName the name of the database
* @return MongoDatabase instance
*/
MongoDatabase getDatabase(String databaseName);
/**
* Starts a new client session with default options
* @return ClientSession for transaction and consistency support
*/
ClientSession startSession();
/**
* Starts a new client session with specific options
* @param options session configuration options
* @return ClientSession for transaction and consistency support
*/
ClientSession startSession(ClientSessionOptions options);
/**
* Lists all database names
* @return iterable of database names
*/
MongoIterable<String> listDatabaseNames();
/**
* Lists databases with detailed information
* @return iterable of database documents with metadata
*/
ListDatabasesIterable<Document> listDatabases();
/**
* Lists databases with detailed information as specified type
* @param clazz the class to decode each database document to
* @return iterable of database information objects
*/
<TResult> ListDatabasesIterable<TResult> listDatabases(Class<TResult> clazz);
/**
* Creates a change stream to monitor cluster-level changes
* @return change stream iterable for all databases
*/
ChangeStreamIterable<Document> watch();
/**
* Creates a change stream with aggregation pipeline
* @param pipeline aggregation pipeline to filter changes
* @return change stream iterable with filtering
*/
ChangeStreamIterable<Document> watch(List<? extends Bson> pipeline);
/**
* Creates a change stream with specific result type
* @param pipeline aggregation pipeline to filter changes
* @param clazz the class to decode each change document to
* @return change stream iterable with custom type
*/
<TResult> ChangeStreamIterable<TResult> watch(List<? extends Bson> pipeline, Class<TResult> clazz);
}Usage Examples:
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.ClientSession;
try (MongoClient client = MongoClients.create()) {
// Get database
MongoDatabase database = client.getDatabase("myapp");
// List all databases
for (String dbName : client.listDatabaseNames()) {
System.out.println("Database: " + dbName);
}
// Start session for transactions
try (ClientSession session = client.startSession()) {
// Use session for transactional operations...
}
// Monitor cluster-wide changes
try (var cursor = client.watch().cursor()) {
while (cursor.hasNext()) {
System.out.println("Change detected: " + cursor.next());
}
}
}The driver supports various configuration approaches for different use cases.
// Configuration with MongoClientSettings
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString("mongodb://host:27017"))
.readPreference(ReadPreference.primaryPreferred())
.writeConcern(WriteConcern.MAJORITY)
.readConcern(ReadConcern.SNAPSHOT)
.codecRegistry(CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()))
.build();
// Configuration with connection string options
String connStr = "mongodb://host:27017/mydb?" +
"readPreference=secondary&" +
"writeConcern=majority&" +
"readConcernLevel=snapshot&" +
"maxPoolSize=50";ObjectFactory implementation for dependency injection frameworks.
/**
* ObjectFactory for creating MongoClient instances in DI containers
*/
public class MongoClientFactory implements ObjectFactory<MongoClient> {
/**
* Creates a MongoClient instance for dependency injection
* @return MongoClient instance
*/
@Override
public MongoClient getObject();
}Install with Tessl CLI
npx tessl i tessl/maven-org-mongodb--mongodb-driver-sync