gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:04:05 25 4
gpt4 key购买 nike

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

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

如果我使用 mongoClient.getDB("mydb"),mongodb 会创建一个新的数据库实例,它无法帮助检查 dbname 是否存在。

有什么建议吗?

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

最佳答案

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

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

关于mongodb - 如何在不使用 mongClient.getDatabaseNames() 的情况下检查 MongoDB 上是否存在数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com