我有以下问题:
我正在使用MongoDB 3的Java驱动程序.
在版本2中,可以使用DB.collectionExists(名称)判断所选数据库中是否存在集合.
在从DB切换到MongoDatabase的版本3中,这种方法不再存在.
如何确定数据库中是否存在集合?我试图用listCollectionNames()遍历集合,但这似乎非常无效.
谢谢你的帮助
我有以下问题:
我正在使用MongoDB 3的Java驱动程序.
在版本2中,可以使用DB.collectionExists(名称)判断所选数据库中是否存在集合.
在从DB切换到MongoDatabase的版本3中,这种方法不再存在.
如何确定数据库中是否存在集合?我试图用listCollectionNames()遍历集合,但这似乎非常无效.
谢谢你的帮助
你说得对.看起来好像是3.0.x版本的MongoDB驱动程序没有通过直接的"does collection exist?"方法移植到MongoDatabase
.
正如您已经提到的,您可以 Select 迭代listCollectionNames()
的结果.虽然这似乎无效,但它与DB.collectionExists(String)
方法的实现类似.下面的代码片段是从mongo-java-driver source中的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;
}
您还可以通过调用getDB
方法从MongoClient
中获得DB
而不是MongoDatabase
.这让你可以使用collectionExists
方法which is deprecated.当然,I do not recommend this second approach,因为,如前所述,it is deprecated.
因此,采用listCollectionNames
次迭代的方法.