MongoDB 3 Java 检查集合是否存在
我有以下问题:
我正在使用MongoDB 3的Java驱动程序。
在版本 2 中,可以执行 DB.collectionExists(name) 来检查所选数据库中是否存在集合。
在版本3中,从DB切换到MongoDatabase时,此方法不再存在。
如何确定数据库中是否存在集合?我试图用listCollectionNames()迭代集合,但这似乎非常无效。
感谢您的帮助
我有以下问题:
我正在使用MongoDB 3的Java驱动程序。
在版本 2 中,可以执行 DB.collectionExists(name) 来检查所选数据库中是否存在集合。
在版本3中,从DB切换到MongoDatabase时,此方法不再存在。
如何确定数据库中是否存在集合?我试图用listCollectionNames()迭代集合,但这似乎非常无效。
感谢您的帮助
一种替代方法是使用该函数将这些添加到可以调用的目标 ArrayList 中。MongoIterable.into
contains("collectionName")
boolean collectionExists = client.getDatabase("dbName").listCollectionNames()
.into(new ArrayList<String>()).contains("collectionName")
你是对的。看起来好像3.0.x版本的MongoDB驱动程序没有通过直接的“集合是否存在?”方法移植到。MongoDatabase
如前所述,您的一个选项是循环访问 的结果。虽然这似乎无效,但它与该方法的实现非常相似。下面的代码片段是从 mongo-java-driver 源代码中的类复制而来的:listCollectionNames()
DB.collectionExists(String)
DB.java
public boolean collectionExists(final String collectionName) {
Set<String> collectionNames = getCollectionNames();
for (final String name : collectionNames) {
if (name.equalsIgnoreCase(collectionName)) {
return true;
}
}
return false;
}
您也可以通过调用该方法而不是从 中获取。这使您可以访问已弃用的方法。当然,我不建议使用第二种方法,因为如前所述,它已被弃用。DB
MongoDatabase
MongoClient
getDB
collectionExists
因此,采用迭代方法。listCollectionNames