MongoDB Java 驱动连接与操作示例
·
根据您的导入语句,您使用的是MongoDB Java驱动程序的旧版本(3.x系列)。目前官方推荐使用更新的驱动,但我会为您同时提供新旧版本的Maven配置方法。
下面这个表格清晰地展示了不同版本的区别和配置信息:
| 特性 | 您正在使用的旧版驱动 (3.x) | 当前推荐的新版驱动 (5.x) |
|---|---|---|
| Maven 依赖 | mongodb-driver |
mongodb-driver-sync |
| GroupId | org.mongodb |
org.mongodb |
| ArtifactId | mongodb-driver |
mongodb-driver-sync |
| 示例版本 | 3.12.14 | 5.1.1 |
| 连接类 | MongoClient |
MongoClient (通过 MongoClients 工厂创建) |
| 推荐度 | ⚠️ 旧项目维护 | ⭐️ 新项目推荐 |
新旧版本Maven配置与代码示例
1. 适用于旧项目的配置 (3.x)
如果您的项目正在使用与 import com.mongodb.MongoClient; 兼容的旧框架(如旧版Spring Data MongoDB),可以继续使用 mongodb-driver。
Maven依赖配置:
<!-- 您当前使用的旧版驱动 [citation:1, citation:6, citation:9] -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.12.14</version> <!-- 建议使用3.x的最终稳定版 -->
</dependency>
连接数据库代码示例:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
public class MongoDBOldExample {
public static void main(String[] args) {
// 方法1: 直接使用服务器地址和端口连接(无需认证)[citation:1, citation:3, citation:6]
try (MongoClient mongoClient = new MongoClient("localhost", 27017)) {
// 获取数据库,如果不存在会自动创建
MongoDatabase database = mongoClient.getDatabase("mycol");
System.out.println("Connect to database successfully: " + database.getName());
// 获取集合(类似于SQL中的表)
MongoCollection<Document> collection = database.getCollection("test");
// 插入一个文档
Document doc = new Document("name", "张三")
.append("age", 30)
.append("city", "北京");
collection.insertOne(doc);
System.out.println("文档插入成功");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
// 方法2: 使用连接字符串(可用于连接MongoDB Atlas云数据库)
String connectionString = "mongodb://username:password@localhost:27017/databaseName";
MongoClientURI uri = new MongoClientURI(connectionString);
try (MongoClient mongoClientWithAuth = new MongoClient(uri)) {
MongoDatabase db = mongoClientWithAuth.getDatabase("databaseName");
// ... 其他操作
}
}
}
2. 适用于新项目的配置 (5.x)
对于新项目,强烈建议使用最新的同步驱动 mongodb-driver-sync,因为它会持续获得功能更新和安全补丁。
Maven依赖配置:
<!-- 新项目推荐使用的新版同步驱动 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>5.1.1</version> <!-- 请检查Maven仓库获取最新版本 -->
</dependency>
连接数据库代码示例(新版):
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import static com.mongodb.client.model.Filters.eq;
public class MongoDBNewExample {
public static void main(String[] args) {
// 新版本使用 MongoClients 工厂类来创建客户端
String connectionString = "mongodb://localhost:27017"; // 替换为您的实际连接字符串
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
// 获取数据库
MongoDatabase database = mongoClient.getDatabase("mydb");
System.out.println("连接到数据库: " + database.getName());
// 获取集合
MongoCollection<Document> collection = database.getCollection("mycollection");
// 插入文档
Document doc = new Document("title", "Back to the Future")
.append("genres", java.util.Arrays.asList("Adventure", "Comedy", "Sci-Fi"));
collection.insertOne(doc);
System.out.println("文档插入成功");
// 查询文档
Document foundDoc = collection.find(eq("title", "Back to the Future")).first();
if (foundDoc != null) {
System.out.println("找到文档: " + foundDoc.toJson());
} else {
System.out.println("未找到匹配的文档");
}
} catch (Exception e) {
System.err.println("发生错误: " + e.getMessage());
}
}
}
核心类说明
MongoClient/MongoClients: 代表与MongoDB服务器的连接池。使用后务必关闭(推荐使用try-with-resources语句)以释放资源。MongoDatabase: 表示一个特定的数据库,用于获取集合对象。MongoCollection<Document>: 表示一个集合,提供了进行增删改查(CRUD)操作的方法。Document: 代表一个BSON文档(类似于JSON对象),是操作数据的主要单位。
总结与建议
- 对于新项目:请直接采用
mongodb-driver-sync依赖和新的MongoClientsAPI,这是MongoDB官方当前的推荐做法。 - 对于现有旧项目:如果只是为了维护且不想进行大规模改动,可以继续使用
mongodb-driver。
希望这些详细的解释和示例能帮助您顺利集成MongoDB到您的Java项目中。如果您在连接字符串格式或特定操作上遇到问题,我很乐意提供进一步的帮助。
更多推荐
所有评论(0)