1. 环境准备

添加 MongoDB 依赖

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

2. 连接 MongoDB

基本连接

String connectionString = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
    MongoDatabase database = mongoClient.getDatabase("testdb");
}

连接池配置

ConnectionString connString = new ConnectionString(
    "mongodb://localhost:27017/?maxPoolSize=50");
MongoClientSettings settings = MongoClientSettings.builder()
    .applyConnectionString(connString)
    .build();

3. CRUD 操作

创建文档

Document user = new Document("name", "张三")
    .append("age", 25)
    .append("email", "zhangsan@example.com");
collection.insertOne(user);

查询文档

collection.find(gt("age", 25))
    .forEach(doc -> System.out.println(doc.toJson()));

更新文档

collection.updateOne(eq("name", "张三"), set("email", "newemail@example.com"));

删除文档

collection.deleteOne(eq("name", "王五"));

4. 使用 POJO 映射

@Document("users")
public class User {
    @Id
    private ObjectId id;
    private String name;
    private Integer age;
}

5. 索引管理

collection.createIndex(Indexes.ascending("name"));
collection.createIndex(Indexes.compoundIndex(
    Indexes.ascending("name"),
    Indexes.descending("age")
));

6. 聚合查询

collection.aggregate(Arrays.asList(
    group("$age", sum("count", 1)),
    sort(descending("count"))
));

7. 事务支持

ClientSession session = mongoClient.startSession();
session.withTransaction(txnBody);

8. 最佳实践

  1. 使用连接池,避免频繁创建和关闭连接
  2. 合理使用索引
  3. 批量操作代替单条操作
  4. 生产环境使用认证连接