Docs 主页 → 开发应用程序 → MongoDB Manual
listDatabases
定义
listDatabases
listDatabases
命令提供所有现有数据库的列表以及有关这些数据库的基本统计信息。listDatabases
必须针对admin
数据库运行,如以下示例所示:
语法
db.adminCommand( { listDatabases: 1 } )
值(例如 1
)不会影响命令的输出。
命令字段
该命令可以采用以下可选字段:
字段 | 类型 | 说明 |
---|---|---|
filter | 文档 | 可选。确定列出哪些数据库的查询谓词。 您可以在
|
nameOnly | 布尔 | 可选。该标志用于指示命令应仅返回数据库名称,还是同时返回数据库名称和大小信息。 返回大小信息需逐个锁定每个数据库,而只返回名称则无需锁定任何数据库。 默认值为 |
authorizedDatabases | 布尔 | 可选。该标志用于确定启用访问控制时根据用户特权返回哪些数据库。
有关更多信息,请参阅行为。 |
comment | 注意到 | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
启用身份验证后, listDatabases
命令会根据分配给执行该命令的用户的特权和authorizedDatabases
命令选项返回不同的值:
如果未指定
authorizedDatabases
,并且如果用户对集群资源执行
listDatabases
操作,listDatabases
命令将返回所有数据库。如果用户没有对集群执行
listDatabases
操作,则listDatabases
命令仅返回用户对其拥有特权的数据库(包括用户对特定集合拥有特权的数据库)。
如果
authorizedDatabases
为true
,则listDatabases
命令仅返回用户对其拥有特权的数据库(包括用户对特定集合拥有特权的数据库)。如果
authorizedDatabases
为false
,并且如果用户对集群执行
listDatabases
操作,listDatabases
命令将返回所有数据库如果用户没有对集群执行
listDatabases
操作,则listDatabases
命令会因权限不足而出错。
客户端断开连接
从 MongoDB4 开始。2 ,如果发出 的客户端在操作完成之前断开连接,MongoDBlistDatabases
会使用listDatabases
killOp
将 标记为终止。
副本集节点状态限制
要在副本集成员上运行, 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
时才出现在输出中。有关详细信息,请参阅分片集群。