根据您的导入语句,您使用的是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 依赖和新的 MongoClients API,这是MongoDB官方当前的推荐做法。
  • 对于现有旧项目:如果只是为了维护且不想进行大规模改动,可以继续使用 mongodb-driver

希望这些详细的解释和示例能帮助您顺利集成MongoDB到您的Java项目中。如果您在连接字符串格式或特定操作上遇到问题,我很乐意提供进一步的帮助。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐