首页 > 解决方案 > Java - 如何从 MongoDatabase 类获取 DB 对象,因为 MongoClient.getDB(dbName) 已弃用

问题描述

这是旧代码:

String uri = "mongodb://" + dbUser + ":" + dbPass + "@" + servers + "/"+dbName+ "?ssl=true&authSource=admin&connectTimeoutMS=6000&socketTimeoutMS=6000";  
MongoClientURI uriObj = new MongoClientURI(uri);            
MongoClient client = new MongoClient(uriObj);

DB db = client.getDB(dbName);  ==> deprecated  

由于 MongoClient.getDB(dbName) 已被弃用,这里是新代码:

String uri = "mongodb://" + dbUser + ":" + dbPass + "@" + servers + "/"+dbName+ "?ssl=true&authSource=admin&connectTimeoutMS=6000&socketTimeoutMS=6000";  
MongoClientURI uriObj = new MongoClientURI(uri);            
MongoClient client = new MongoClient(uriObj);

MongoDatabase database = client.getDatabase(dbName);  ==> How to get DB db?

如何从新代码中获取 DB 对象(旧代码中的 DB db)?

标签: javamongodb

解决方案


确切地说,您的代码DB db = mongoClient.getDB(dbName);适用于 mongodb java 驱动程序版本,例如 2.14.22.13.3. 下面是较新的,因为3.0.43.7.1


如文档中所述:

使用 MongoClients.create() 或 MongoClient() 用于旧版 MongoClient API,以连接到正在运行的 MongoDB 实例。

直到 3.7 版(旧版 MongoClient API),您可以使用连接字符串和getDatabase()方法访问数据库,例如:

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true"));
MongoDatabase database = mongoClient.getDatabase("db_name");

或通过相同的逻辑:

MongoClientURI uri = new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase database = mongoClient.getDatabase("db_name");

新的 MongoClient API自 3.7 起

要连接到正在运行的 MongoDB 实例并访问数据库,您可以使用:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoDatabase database = mongoClient.getDatabase("db_name");

为 getDatabase() 方法指定数据库的名称。如果数据库不存在,MongoDB 会在您首次存储该数据库的数据时创建该数据库。


推荐阅读