如何在不使用mongClient.getDatabaseNames()的情况下检查MongoDB上是否存在数据库

如何在不使用mongClient.getDatabaseNames()的情况下检查MongoDB上是否存在数据库,mongodb,Mongodb,出于隐私原因,我们将mongobd配置为禁止“listdatabase”(即mongClient.getDatabaseNames())功能 我想检查MongoDB中是否存在不使用mongClient.getDatabaseNames()的数据库 如果我使用mongoClient.getDB(“mydb”),mongodb将创建一个新的db实例,它无法帮助检查dbname是否存在 有什么建议吗 我们有一个通用的“ui连接向导”,用于连接到具有不同身份验证的不同mongodb服务器。此向导必须验证

出于隐私原因,我们将mongobd配置为禁止“listdatabase”(即mongClient.getDatabaseNames())功能

我想检查MongoDB中是否存在不使用mongClient.getDatabaseNames()的数据库

如果我使用mongoClient.getDB(“mydb”),mongodb将创建一个新的db实例,它无法帮助检查dbname是否存在

有什么建议吗


我们有一个通用的“ui连接向导”,用于连接到具有不同身份验证的不同mongodb服务器。此向导必须验证“dabase_name”字段,用户是否输入了正确的数据库名称。在这种情况下,“ListDATABASE”(即Eclipse .GETDabaseMaseSe())不能用作身份验证失败,或者“使用DB”(即,客户机.GETBB())不能用于创建新的DB实例。

< P>您认为数据库存在的时间是什么时候?你为什么要做这个检查?MongoDB在数据库中创建集合时会创建数据库,插入数据、创建索引或使用
db.createCollection()
创建集合时会发生这种情况。数据库不存在的合理条件是它不包含集合。另一个合理的条件是,其中包含的所有集合都不包含数据。您可以使用
db.getCollectionNames()
检查前者,后者通过检查每个集合的
db..count()
。然而,第三个条件可能是数据库的存储大小为零,您可以使用
db.stats()
进行检查


在由于安全原因而禁止使用
getDatabaseNames()
的情况下,您应该安全地控制对数据库的访问,并担心授权,而不是存在。如果存在数据库,则应将其限制为适当的用户和角色,以便如果其他用户尝试与该数据库交互,则会被拒绝。

我们有一个通用的“ui连接向导”,用于连接到具有不同身份验证的不同mongodb服务器。此向导必须验证“dabase_name”字段,用户是否输入了正确的数据库名称。在我的例子中,“listDatabase”不能用于身份验证失败,或者“use db(client.getDB())”不能用于创建新的db实例。