Skip to content

MongoDB Java Integration

MongoDB provides a Java driver that allows us to interact with MongoDB in Java applications. Through the Java driver, we can perform various operations such as inserting, querying, updating, and deleting data.

Basic Concepts

Types of Java Drivers

  1. MongoDB Java Driver: Official Java driver provided by MongoDB.
  2. Spring Data MongoDB: Encapsulation based on MongoDB Java Driver, providing a more advanced API.

In this chapter, we will use the official Java driver.

Connecting to MongoDB

To connect to MongoDB, we need to use the MongoClient class.

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBConnection {
    public static void main(String[] args) {
        // Connect to MongoDB server
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            // Get database
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            
            System.out.println("Connected to database successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Inserting Data

Inserting a Single Document

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;

public class MongoDBInsert {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Create document
            Document document = new Document("name", "John")
                    .append("age", 30)
                    .append("email", "john@example.com")
                    .append("status", "active");
            
            // Insert document
            collection.insertOne(document);
            
            System.out.println("Document inserted successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Inserting Multiple Documents

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;

public class MongoDBInsertMany {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Create document list
            List<Document> documents = new ArrayList<>();
            documents.add(new Document("name", "Jane")
                    .append("age", 25)
                    .append("email", "jane@example.com")
                    .append("status", "pending"));
            documents.add(new Document("name", "Bob")
                    .append("age", 35)
                    .append("email", "bob@example.com")
                    .append("status", "inactive"));
            
            // Insert document list
            collection.insertMany(documents);
            
            System.out.println("Documents inserted successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Querying Data

Querying All Documents

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;

public class MongoDBQuery {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Query all documents
            FindIterable<Document> documents = collection.find();
            
            // Iterate through results
            for (Document document : documents) {
                System.out.println(document);
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Querying Specific Documents

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;

public class MongoDBQuerySpecific {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Query specific document
            Document query = new Document("name", "John");
            FindIterable<Document> documents = collection.find(query);
            
            // Iterate through results
            for (Document document : documents) {
                System.out.println(document);
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Updating Data

Updating a Single Document

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class MongoDBUpdate {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Update single document
            collection.updateOne(
                    Filters.eq("name", "John"),
                    Updates.set("age", 31)
            );
            
            System.out.println("Document updated successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Updating Multiple Documents

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class MongoDBUpdateMany {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Update multiple documents
            collection.updateMany(
                    Filters.eq("status", "active"),
                    Updates.set("status", "pending")
            );
            
            System.out.println("Documents updated successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Deleting Data

Deleting a Single Document

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;

public class MongoDBDelete {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Delete single document
            collection.deleteOne(Filters.eq("name", "Bob"));
            
            System.out.println("Document deleted successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Deleting Multiple Documents

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;

public class MongoDBDeleteMany {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Delete multiple documents
            collection.deleteMany(Filters.eq("status", "pending"));
            
            System.out.println("Documents deleted successfully");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Advanced Querying

Using Query Operators

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
import com.mongodb.client.model.Filters;

public class MongoDBQueryOperators {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Use query operators
            FindIterable<Document> documents = collection.find(
                    Filters.and(
                            Filters.gt("age", 25),
                            Filters.eq("status", "active")
                    )
            );
            
            // Iterate through results
            for (Document document : documents) {
                System.out.println(document);
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Sorting and Pagination

java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
import com.mongodb.client.model.Sorts;

public class MongoDBQuerySort {
    public static void main(String[] args) {
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = mongoClient.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");
            
            // Sorting and pagination
            FindIterable<Document> documents = collection.find()
                    .sort(Sorts.descending("age"))
                    .skip(1)
                    .limit(2);
            
            // Iterate through results
            for (Document document : documents) {
                System.out.println(document);
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

Summary

The MongoDB Java driver allows us to interact with MongoDB in Java applications. Through the Java driver, we can perform various operations such as inserting, querying, updating, and deleting data. When using the Java driver, we should pay attention to connection management, data processing, and error handling to ensure the efficient operation of the application.

Content is for learning and research only.