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

  1. Use connection pools, avoid frequently creating and closing connections
  2. Use indexes reasonably
  3. Use batch operations instead of single operations
  4. Use authenticated connections in production environments