我有以下问题:
我使用的是MongoDB 3的Java驱动程序。
在版本2中,可以使用DB.collectionExists(名称)来检查所选数据库中是否存在集合。
在从DB切换到MongoDatabase的版本3中,此方法不再存在。
如何确定一个集合是否存在于数据库中?我试图用listCollectionNames()遍历集合,但似乎效率很低。
谢谢你的帮忙
发布于 2017-03-10 06:38:32
一种替代方法是使用MongoIterable.into
函数将它们添加到可以调用contains("collectionName")
的目标ArrayList中。
boolean collectionExists = client.getDatabase("dbName").listCollectionNames()
.into(new ArrayList<String>()).contains("collectionName")
发布于 2016-06-22 09:54:25
当我试图找到一种有效的方法来检查集合是否存在时,我偶然发现了这篇文章。由于我的数据库中有超过50k个集合,因此使用listCollectionNames()
方法的效率非常低。
我所做的是使用db.collection.count()
方法,如果它返回一个非零值,那么我会将其视为一个不存在的集合。当然,这并不是百分之百正确的,因为可以有一个没有条目的集合,这种方法会将其视为不存在的集合。但是对于MongoDB中的大多数场景,只有当集合至少有一个文档时,它才有意义。以下是示例代码。
public boolean isCollectionExists(DB db, String collectionName)
{
DBCollection table = db.getCollection(collectionName);
return (table.count()>0)?true:false;
}
发布于 2018-04-22 06:27:27
对于任何仍在寻找的人:假设您有名为"db“的MongoDatabase实例
try {
db.createCollection("myCol");
} catch (MongoCommandException e) {
System.err.println("Collection Exists");
}
https://stackoverflow.com/questions/31909247
复制相似问题