【发布时间】:2021-12-20 07:40:21
【问题描述】:
我在连接到 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);
没有错误,但也没有插入任何内容。
我什至尝试将所有代码放在try-catch 中,但仍然没有错误,除非我删除用户或密码时它会抛出一个异常,告诉我需要密码。
显然一切正常,我的用户名和密码以及连接到 MondoDB 的链接都是正确的,我看不出有什么问题。
问题:一切似乎都设置正确,但似乎没有连接,我看不出它为什么不工作。
所以我的问题是:
如何使用 MongoDB Driver Sync 成功连接到 Mongo DB,我如何知道它已连接,因为它没有给我任何错误?
【问题讨论】:
-
更密切地关注您链接到的文档,同时阅读Connection String URI Format。您将
myFirstDatabase指定为身份验证数据库;您需要在按照here 所述连接后切换数据库。通常您不指定 auth 数据库,默认的admin很好,因此请将该部分从连接字符串中删除。myFirstDatabase将成为myFirstCollection的一个很好的测试数据库但是:) -
哇,我不敢相信我花了一整天的时间来尝试这样做......非常感谢。我想我对 MongoDB 给我的连接字符串示例感到困惑,当我点击“Connect”时,连接字符串中有“MyFirstDatabase”,我不知何故认为这是我要处理的数据库而不是 auth 数据库。再次感谢您。
-
我自己也犯了这个错误,所以对我来说非常熟悉......很高兴我能提供帮助。我已经发布了我的评论作为完整性的答案;如果您认为合适,请接受。