我正在使用以下mongodb驱动程序。
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.0.2</version>
</dependency>
这是我的联系方式
String textUri = "mongodb://<username>:<password>@ds027155.mlab.com:27155/";
MongoClientURI uri = new MongoClientURI(textUri);
MongoClient m = new MongoClient(uri);
我收到错误。但是,如果我提到数据库名称
String textUri = "mongodb://<username>:<password>@ds027155.mlab.com:27155/<db-name>";
它没有任何问题。实际上我想列出服务器上的所有数据库。 我如何在不指定数据库名称的情况下提及uri?
另外,我如何仅列出数据库中存在的用户定义集合。
MongoDatabase db = m.getDatabase("standupmeetingnotes");
ListCollectionsIterable<Document> listColl = db.listCollections();
MongoIterable<String> colls = db.listCollectionNames();
for (String s : colls) {
System.out.println(s);
}
打印 objectlabs-system , 的 objectlabs-system.admin.collections 下, system.indexes 也是系统定义的集合,与用户定义的集合不同。
我能以任何方式省略这些吗?
感谢。
答案 0 :(得分:0)
回答主题中的问题:“如何在Java中连接到MongoDB而不在URL中指定数据库名称?”。我创建了使用API 3.2.2连接到MongoDB的简单类。并阅读数据库列表。
显然,有两种方法可以连接到MongoDB实例 - 使用URL而不使用URL。在以前的版本中,有一种方法可以使用没有URL的用户名和密码连接到数据库(实例内),但是在3.2.2中,不再可能。 (我应该承认,MongoDB团队改变他们的Java API的速度真的非常了不起。)
无论如何,无论是否使用用户名/密码,该课程都同样有效(前提是可以访问Mongo w / o密码)。并且DB连接步骤可以在连接建立后的稍后时间执行。
grep -oP '"body":"\K[^"]+' <<< '"body":"SOME MESSAGE"'
SOME MESSAGE