我有以下问题:
我正在使用MongoDB 3的Java驱动程序.
在版本2中,可以执行DB.collectionExists(name)来检查所选数据库中是否存在集合.
在从DB切换到MongoDatabase的版本3中,此方法不再存在.
如何确定数据库中是否存在集合?我尝试使用listCollectionNames()迭代集合,但这看起来非常无效.
谢谢你的帮助
why*_*ite 18
你是对的.似乎3.0.x版本的MongoDB驱动程序没有通过直接" 存在集合? "方法移植到MongoDatabase.
正如您已经提到的,一个选项是迭代结果listCollectionNames().虽然这似乎无效,但它与该方法的实现非常相似DB.collectionExists(String).下面的代码片段从复制DB.java类蒙戈-java的驱动源:
public boolean collectionExists(final String collectionName) {
Set<String> collectionNames = getCollectionNames();
for (final String name : collectionNames) {
if (name.equalsIgnoreCase(collectionName)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
你也可以得到DB,而不是MongoDatabase从MongoClient调用getDB方法.这使您可以访问不推荐使用的collectionExists方法.当然,我不推荐第二种方法,因为如上所述,它已被弃用.
因此,请继续使用迭代listCollectionNames方法.
小智 15
另一种方法是使用该MongoIterable.into函数将这些函数添加到可以调用的目标ArrayList中contains("collectionName").
boolean collectionExists = client.getDatabase("dbName").listCollectionNames()
.into(new ArrayList<String>()).contains("collectionName")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16885 次 |
| 最近记录: |