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
- MongoDB Java Driver: Official Java driver provided by MongoDB.
- 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.