listDatabases
定义
listDatabases
listDatabases
命令提供了所有现有数据库的列表,以及有关这些数据库的基本统计信息。listDatabases
必须针对admin
数据库运行,如以下示例所示:
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有MongoDB Atlas集群都支持此命令。有关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
时才出现在输出中。请参阅分片集群,了解详情。