1. Environment Setup
Add MongoDB Dependency
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.9.1</version>
</dependency>
2. Connect to MongoDB
Basic Connection
String connectionString = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
MongoDatabase database = mongoClient.getDatabase("testdb");
}
Connection Pool Configuration
ConnectionString connString = new ConnectionString(
"mongodb://localhost:27017/?maxPoolSize=50");
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connString)
.build();
3. CRUD Operations
Create Document
Document user = new Document("name", "Zhang San")
.append("age", 25)
.append("email", "zhangsan@example.com");
collection.insertOne(user);
Query Document
collection.find(gt("age", 25))
.forEach(doc -> System.out.println(doc.toJson()));
Update Document
collection.updateOne(eq("name", "Zhang San"), set("email", "newemail@example.com"));
Delete Document
collection.deleteOne(eq("name", "Wang Wu"));
4. Using POJO Mapping
@Document("users")
public class User {
@Id
private ObjectId id;
private String name;
private Integer age;
}
5. Index Management
collection.createIndex(Indexes.ascending("name"));
collection.createIndex(Indexes.compoundIndex(
Indexes.ascending("name"),
Indexes.descending("age")
));
6. Aggregation Queries
collection.aggregate(Arrays.asList(
group("$age", sum("count", 1)),
sort(descending("count"))
));
7. Transaction Support
ClientSession session = mongoClient.startSession();
session.withTransaction(txnBody);
8. Best Practices
- Use connection pools, avoid frequently creating and closing connections
- Use indexes reasonably
- Use batch operations instead of single operations
- Use authenticated connections in production environments