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. 最佳实践
- 使用连接池,避免频繁创建和关闭连接
- 合理使用索引
- 批量操作代替单条操作
- 生产环境使用认证连接