The MongoDB Synchronous Driver for Java providing blocking I/O patterns for database operations
npx @tessl/cli install tessl/maven-org-mongodb--mongodb-driver-sync@5.5.0The MongoDB Synchronous Driver for Java provides blocking I/O patterns for MongoDB database operations. It offers a comprehensive API for database and collection operations including CRUD operations, aggregation pipelines, indexing, transactions, GridFS file storage, and client-side field level encryption.
implementation 'org.mongodb:mongodb-driver-sync:5.5.1'import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;For advanced operations:
import com.mongodb.client.ClientSession;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.vault.ClientEncryption;
import com.mongodb.client.vault.ClientEncryptions;import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
// Connect to MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
// Get database and collection
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("mycollection");
// Insert a document
Document doc = new Document("name", "John Doe")
.append("age", 30)
.append("city", "New York");
collection.insertOne(doc);
// Find documents
Document found = collection.find().first();
System.out.println(found.toJson());
// Close connection
mongoClient.close();The MongoDB Java driver is organized around these key components:
MongoClients factory and MongoClient for connection managementMongoDatabase for database-level operations and collection managementMongoCollection for document CRUD operations, indexing, and aggregationFindIterable, AggregateIterable) for query executionClientSession for transactions and causally consistent operationsGridFSBucket interfaceClientEncryptionFactory methods for creating MongoDB client connections with various configuration options including connection strings, settings objects, and driver information.
public static MongoClient create();
public static MongoClient create(String connectionString);
public static MongoClient create(ConnectionString connectionString);
public static MongoClient create(MongoClientSettings settings);Database-level operations including collection management, database commands, aggregation pipelines, and change streams.
public interface MongoDatabase {
String getName();
MongoCollection<Document> getCollection(String collectionName);
<TDocument> MongoCollection<TDocument> getCollection(String collectionName, Class<TDocument> documentClass);
Document runCommand(Bson command);
void createCollection(String collectionName);
void drop();
ListCollectionsIterable<Document> listCollections();
AggregateIterable<Document> aggregate(List<? extends Bson> pipeline);
ChangeStreamIterable<Document> watch();
}Complete CRUD (Create, Read, Update, Delete) operations for documents including bulk operations, find-and-modify operations, and query execution.
public interface MongoCollection<TDocument> {
// Insert operations
InsertOneResult insertOne(TDocument document);
InsertManyResult insertMany(List<? extends TDocument> documents);
// Query operations
FindIterable<TDocument> find();
FindIterable<TDocument> find(Bson filter);
// Update operations
UpdateResult updateOne(Bson filter, Bson update);
UpdateResult updateMany(Bson filter, Bson update);
ReplaceOneResult replaceOne(Bson filter, TDocument replacement);
// Delete operations
DeleteResult deleteOne(Bson filter);
DeleteResult deleteMany(Bson filter);
// Count operations
long countDocuments();
long estimatedDocumentCount();
}Advanced querying capabilities including filtering, sorting, projection, aggregation pipelines, and MapReduce operations.
public interface FindIterable<TResult> extends MongoIterable<TResult> {
FindIterable<TResult> filter(Bson filter);
FindIterable<TResult> sort(Bson sort);
FindIterable<TResult> projection(Bson projection);
FindIterable<TResult> limit(int limit);
FindIterable<TResult> skip(int skip);
}
public interface AggregateIterable<TResult> extends MongoIterable<TResult> {
void toCollection();
AggregateIterable<TResult> allowDiskUse(Boolean allowDiskUse);
Document explain();
}Index creation, management, and Atlas Search index operations for optimizing query performance.
// Standard indexes
String createIndex(Bson keys);
List<String> createIndexes(List<IndexModel> indexes);
void dropIndex(String indexName);
ListIndexesIterable<Document> listIndexes();
// Atlas Search indexes
String createSearchIndex(String indexName, Bson definition);
List<String> createSearchIndexes(List<SearchIndexModel> searchIndexes);
ListSearchIndexesIterable<Document> listSearchIndexes();Client sessions for transactions, causally consistent reads, and server session management.
public interface ClientSession extends AutoCloseable {
void startTransaction();
void startTransaction(TransactionOptions transactionOptions);
void commitTransaction();
void abortTransaction();
<T> T withTransaction(TransactionBody<T> transactionBody);
boolean hasActiveTransaction();
}
@FunctionalInterface
public interface TransactionBody<T> {
T execute();
}Real-time change monitoring at cluster, database, and collection levels with resume token support.
public interface ChangeStreamIterable<TResult> extends MongoIterable<ChangeStreamDocument<TResult>> {
MongoChangeStreamCursor<ChangeStreamDocument<TResult>> cursor();
ChangeStreamIterable<TResult> fullDocument(FullDocument fullDocument);
ChangeStreamIterable<TResult> resumeAfter(BsonDocument resumeToken);
ChangeStreamIterable<TResult> startAfter(BsonDocument startAfter);
}Large file storage and retrieval system with streaming upload/download capabilities and file metadata management.
public interface GridFSBucket {
String getBucketName();
int getChunkSizeBytes();
// Upload operations
GridFSUploadStream openUploadStream(String filename);
ObjectId uploadFromStream(String filename, InputStream source);
// Download operations
GridFSDownloadStream openDownloadStream(ObjectId id);
void downloadToStream(ObjectId id, OutputStream destination);
// File management
void delete(ObjectId id);
void rename(ObjectId id, String newFilename);
GridFSFindIterable find();
}Client-side field level encryption for sensitive data with data key management and queryable encryption support.
public interface ClientEncryption extends AutoCloseable {
// Data key management
BsonBinary createDataKey(String kmsProvider);
BsonBinary createDataKey(String kmsProvider, DataKeyOptions dataKeyOptions);
DeleteResult deleteKey(BsonBinary id);
// Encryption/Decryption
BsonBinary encrypt(BsonValue value, EncryptOptions options);
BsonValue decrypt(BsonBinary encryptedValue);
// Queryable encryption
BsonDocument encryptExpression(Bson expression, EncryptOptions options);
}Client-Side Field Level Encryption
// Core client types
interface MongoClient extends MongoCluster, AutoCloseable {
void close();
ClusterDescription getClusterDescription();
}
interface MongoCluster {
MongoDatabase getDatabase(String databaseName);
ClientSession startSession();
ClientSession startSession(ClientSessionOptions options);
MongoIterable<String> listDatabaseNames();
}
// Common result types
class InsertOneResult {
BsonValue getInsertedId();
boolean wasAcknowledged();
}
class UpdateResult {
long getMatchedCount();
long getModifiedCount();
BsonValue getUpsertedId();
boolean wasAcknowledged();
}
class DeleteResult {
long getDeletedCount();
boolean wasAcknowledged();
}
// Cursor interfaces
interface MongoCursor<TResult> extends Iterator<TResult>, AutoCloseable {
TResult tryNext();
int available();
ServerCursor getServerCursor();
ServerAddress getServerAddress();
}
interface MongoChangeStreamCursor<TResult> extends MongoCursor<TResult> {
BsonDocument getResumeToken();
}