java - 如何使用 Mongo DB Sync Driver 成功连接和测试连接?
问题描述
我在连接到 MongoDB Atlas 时遇到问题。我正在关注 MongoDB 提供的教程,但我无法让它工作。
驱动:https ://mongodb.github.io/mongo-java-driver/4.3/ (最新版)
我正在使用以下代码连接到 MongoDB:
ConnectionString mongoConn = new ConnectionString(
"mongodb+srv://user:password@cluster0.xdibk.mongodb.net/myFirstDatabase?retry" +
"Writes=true&w=majority"
);
MongoClient mongoClient = MongoClients.create(mongoConn);
上面的代码可以工作,但除了在控制台中显示一些信息之外什么都不做
我没有发现这有什么用,所以我使用以下方法将其关闭:
Logger.getLogger("org.mongodb.driver").setLevel(Level.WARNING);
然后我决定通过尝试插入一个集合来测试连接,看看是否真的保存了任何东西:
MongoCollection<Document> collection = database.getCollection("test");
Document document = new Document("title", "Test")
.append("description", "Mongo DB connection and insertion test");
collection.insertOne(document);
没有错误,但也没有插入任何东西。
我什至尝试将所有代码放入 atry-catch
但仍然没有错误,除非我删除用户或密码时它会抛出一个异常,告诉我需要密码。
显然一切正常,我的用户名和密码以及连接到 MondoDB 的链接都是正确的,我看不出有什么问题。
问题:一切似乎都设置正确,但似乎没有连接,我看不出它为什么不工作。
所以我的问题是:
如何使用 MongoDB Driver Sync 成功连接到 Mongo DB,我如何知道它已连接,因为它没有给我任何错误?
解决方案
您将数据库指定为身份验证数据库。根据MongoDB 参考中的连接字符串 URI 格式页面,URI 格式为:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
通常admin
用作身份验证数据库,因此您ConnectionString
将:
ConnectionString mongoConn = new ConnectionString(
"mongodb+srv://user:password@cluster0.xdibk.mongodb.net/admin?retryWrites=true&w=majority");
推荐阅读
- php - Laravel:前端的 AJAX 查询在 1 个 JSON 变量超过 50,000 - 68,000 个字符长后丢失数据
- c++ - clang-tidy 错误地替换了 typedef 中的模板参数
- sql - 避免存储所有可能的产品配置的排列
- c# - 双查找集合?
- java - 记录在 JButtons 数组中选择了哪个数组
- php - password_verify 和密码中的特殊字符
- sql - 如何使用sqlite中的默认值填充表中缺失的行
- ios - iOS EXC_BAD_ACCESS 试图取消引用垃圾指针 TwilioPoco
- excel - 如何在excel中使用MID函数提取start_num值增加的文本?
- java - 动态添加的内容无法正确滚动(JScrollPane 内的 JTextPane)