java - 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)?
解决方案
确切地说,您的代码DB db = mongoClient.getDB(dbName);
适用于 mongodb java 驱动程序版本,例如 2.14.2
和2.13.3
. 下面是较新的,因为3.0.4
和3.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");
要连接到正在运行的 MongoDB 实例并访问数据库,您可以使用:
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoDatabase database = mongoClient.getDatabase("db_name");
为 getDatabase() 方法指定数据库的名称。如果数据库不存在,MongoDB 会在您首次存储该数据库的数据时创建该数据库。
推荐阅读
- excel - 在单元格内进行多次搜索,如果找到则偏移结果
- amazon-web-services - 查看子网中的所有资源/查看子网是否正在使用中
- django - pipenv 与用户一起进行生产解决方法,它可行吗?
- c - 从函数返回 NULL 的指针数组
- c# - 环境上下文范围 WCF 实例提供程序
- android - 奥利奥后台服务限制START_STICKY问题
- node.js - 通过用户身份验证(Node/Vue/Passport)防止中间人攻击
- python - 格式化缺少元素的字符串 - Python
- nsis - 如何使用 NSIS 将焦点设置为许可协议复选框控件
- xml - 如何在文本文件中的特定模式之后替换请求值?