listDatabases
定义
listDatabases
listDatabases
命令提供所有现有数据库的列表以及有关这些数据库的基本统计信息。listDatabases
必须针对admin
数据库运行,如以下示例所示:
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
db.adminCommand( { listDatabases: 1 } )
值(例如 1
)不会影响命令的输出。
命令字段
该命令可以采用以下可选字段:
字段 | 类型 | 说明 |
---|---|---|
filter | 文档 | |
nameOnly | 布尔 | 可选。该标志用于指示命令应仅返回数据库名称,还是同时返回数据库名称和大小信息。 默认值为 |
authorizedDatabases | 布尔 | 可选。该标志用于确定启用访问控制时根据用户特权返回哪些数据库。
如需了解更多信息,请参阅行为。 |
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
启用身份验证后,listDatabases
命令会根据为执行命令的用户分配的权限和 authorizedDatabases
命令选项返回不同的值:
如果未指定
authorizedDatabases
,并且如果用户对集群资源执行
listDatabases
操作,listDatabases
命令将返回所有数据库。如果用户未对集群执行
listDatabases
操作,listDatabases
命令仅返回用户拥有特权的数据库(包括用户在特定集合上拥有特权的数据库)。
如果
authorizedDatabases
为true
,listDatabases
命令仅返回用户拥有权限的数据库(包括用户拥有特定集合权限的数据库)。如果
authorizedDatabases
为false
,并且如果用户对集群执行
listDatabases
操作,listDatabases
命令将返回所有数据库如果用户没有对集群的
listDatabases
操作权限,listDatabases
命令会因权限不足而出错。
客户端断开连接
从 MongoDB 4.2 开始,如果在操作完成之前,发出 listDatabases
的客户端断开连接,MongoDB 将使用killOp
将 listDatabases
标记为终止。
副本集节点状态限制
若要在副本集节点上运行,listDatabases
操作要求该节点处于 PRIMARY
或 SECONDARY
状态。如果该节点处于其他状态,如 STARTUP2
,则操作错误。
示例
列出数据库名称和大小
对 admin
数据库运行 listDatabases
。
db.adminCommand( { listDatabases: 1 } )
以下是listDatabases
结果的示例:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 83886080, "empty" : false }, { "name" : "local", "sizeOnDisk" : 83886080, "empty" : false }, { "name" : "test", "sizeOnDisk" : 83886080, "empty" : false } ], "totalSize" : 251658240, "totalSizeMb" : 251, "ok" : 1 }
仅列出数据库名称
对 admin
数据库运行 listDatabases
。指定 nameOnly: true
选项:
db.adminCommand( { listDatabases: 1, nameOnly: true} )
以下是使用 nameOnly: true
选项运行时的 listDatabases
结果示例:
{ "databases" : [ { "name" : "admin" }, { "name" : "local" }, { "name" : "test" } ], "ok" : 1 }
列出符合过滤条件的数据库
对 admin
数据库运行 listDatabases
。指定 filter
选项以仅列出与指定过滤条件匹配的数据库。
例如,以下内容指定一个过滤器,这样 listDatabases
仅返回名称与指定的 regular expression
匹配的数据库的信息:
db.adminCommand( { listDatabases: 1, filter: { "name": /^rep/ } } )
分片集群
当针对 mongos
实例执行时,listDatabases
:
如果
nameOnly: false
,则将shards
嵌入式文档添加到每个数据库的概要文档,并且排除
local
数据库。
shards
嵌入文档中的每个元素都包含一个字段,该字段的键指定该分片上集合的名称,其值表示该集合的大小(以字节为单位)。
sizeOnDisk
字段表示所有列出的集合和索引的总大小。
例如:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 16384, "empty" : false, "shards" : { "config" : 16384 } }, { "name" : "config", "sizeOnDisk" : 176128, "empty" : false, "shards" : { "clients" : 28672, "patients" : 8192, "config" : 139264 } }, { "name" : "test", "sizeOnDisk" : 12288, "empty" : false, "shards" : { "clients" : 12288 } } ], "totalSize" : 204800, "totalSizeMb" : 0, "ok" : 1 }
输出
listDatabases.databases.shards
类型:文档
shards
文档中的每个元素都包含一个字段,该字段的键提供该分片上集合的名称,其值表示该集合的大小(以字节为单位)。shards
仅当nameOnly: false
时才出现在输出中。请参阅分片集群,了解详情。