CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-mongodb--mongodb-driver-sync

The MongoDB Synchronous Driver for Java providing blocking I/O patterns for database operations

Pending
Overview
Eval results
Files

connection-management.mddocs/

Connection Management

Factory methods and client interfaces for establishing and managing MongoDB connections with various configuration options.

Capabilities

MongoClients Factory

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);

MongoClient Interface

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 connection

MongoCluster Interface

Base 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());
        }
    }
}

Configuration Options

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";

MongoClientFactory

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

docs

change-streams.md

collection-crud.md

connection-management.md

database-operations.md

encryption.md

gridfs.md

index-management.md

index.md

query-aggregation.md

sessions-transactions.md

tile.json