MongoDB Java Driver – Quick reference

The MongoDB Java Driver is a library that provides a Java-based interface for interacting with MongoDB, a popular NoSQL document database. It allows Java developers to connect to MongoDB databases, perform CRUD (Create, Read, Update, Delete) operations, and execute advanced queries using the Java programming language.

The MongoDB Java Driver serves as a bridge between your Java application and the MongoDB server, enabling seamless integration and communication between the two. It abstracts away the complexities of working directly with MongoDB’s wire protocol, providing a higher-level API that simplifies the development process.

If you are new to MongoDB we recommend checking this article: Building Java Enterprise applications using MongoDB

Driver Configuration

Firstly, let’s see how to configure your application to use MongoDB Driver. Add the following dependency to your Maven project:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.9.1</version>
</dependency>

Connecting to MongoDB

How to connect to a local Database and get an handle to DB named “mydb”

MongoClient mongoClient = new MongoClient();
MongoDatabase database = mongoClient.getDatabase("mydb");

How to get an handle to the Collection named “test”

MongoCollection<Document> collection = database.getCollection("test");

Document management

How to create a Document and insert it:

Document doc = new Document("name", "MongoDB")
			   .append("type", "database")
			   .append("count", 1)
			   .append("info", new Document("x", 203).append("y", 102));

collection.insertOne(doc);

How to convert a Document into JSON:

String json = myDoc.toJson();

How to find the first Document in a Collection

Document myDoc = collection.find().first();

How to insert multiple Documents in one shot:

List<Document> documents = new ArrayList<Document>();
for (int i = 0; i < 100; i++) {
	documents.add(new Document("i", i));
}
collection.insertMany(documents);

How to count the number of Documents in a Collection:

System.out.println("total # of documents " + collection.count());

How to iterate over a Collection

MongoCursor<Document> cursor = collection.find().iterator();
try {
	while (cursor.hasNext()) {
		System.out.println(cursor.next().toJson());
	}
} finally {
	cursor.close();
}

How to find one Document whose key matches with a value:

Document myDoc = collection.find(eq("i", 71)).first();

How to find all Documents which are matching a constraint:

MongoCursor<Document> cursor = collection.find(gt("i", 50)).iterator();

How to find all Documents which are matching multiple constraints:

MongoCursor<Document> cursor = collection.find(and(gt("i", 50), lte("i", 100))).iterator();

How to apply a filter which executes a Callback method defined in a Block class:

Block<Document> printBlock = new Block<Document>() {
	@Override
	public void apply(final Document document) {
		System.out.println(document.toJson());
	}
};
collection.find(gt("i", 50)).forEach(printBlock);

How to use a Projection:

Document myDoc = collection.find().projection(excludeId()).first();

How to update a Document:

collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));

How to update multiple Documents:

UpdateResult updateResult = collection.updateMany(lt("i", 100),
		new Document("$inc", new Document("i", 100)));
System.out.println(updateResult.getModifiedCount());

How to delete a Document

collection.deleteOne(eq("i", 110));

How to delete multiple Documents:

DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
System.out.println(deleteResult.getDeletedCount());

How to perform a Bulk write:

List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
writes.add(new InsertOneModel<Document>(new Document("_id", 4)));
writes.add(new InsertOneModel<Document>(new Document("_id", 5)));
writes.add(new InsertOneModel<Document>(new Document("_id", 6)));
writes.add(new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
writes.add(new DeleteOneModel<Document>(new Document("_id", 2)));
writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));

collection.bulkWrite(writes);
Found the article helpful? if so please follow us on Socials