首页 > 解决方案 > 如何使用 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,我如何知道它已连接,因为它没有给我任何错误?

标签: javamongodb

解决方案


您将数据库指定为身份验证数据库。根据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");

推荐阅读