Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

listDatabases

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 示例
  • 输出
listDatabases

listDatabases 命令提供了所有现有数据库的列表,以及有关这些数据库的基本统计信息。listDatabases 必须针对 admin 数据库运行,如以下示例所示:

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

db.adminCommand( { listDatabases: 1 } )

值(例如 1)不会影响命令的输出。

该命令可以采用以下可选字段:

字段
类型
说明
filter
文档

可选。确定列出哪些数据库的查询谓词。

您可以在 listDatabases 的输出中为任意字段指定一个条件:

  • name

  • sizeOnDisk

  • empty

  • shards

nameOnly
布尔

可选。该标志用于指示命令应仅返回数据库名称,还是同时返回数据库名称和大小信息。

返回大小信息需逐个锁定每个数据库,而只返回名称则无需锁定任何数据库。

默认值为 false,因此 listDatabases 会返回每个数据库的名称和大小信息。

authorizedDatabases
布尔

可选。该标志用于确定启用访问控制时根据用户特权返回哪些数据库。

  • 如果未指定 authorizedDatabases,并且

    • 如果用户对集群资源执行 listDatabases 操作,listDatabases 命令将返回所有数据库。

    • 如果用户没有对集群执行listDatabases动作,则listDatabases仅返回用户对其拥有特权的数据库(包括用户对特定集合拥有特权的数据库)。

  • 如果authorizedDatabasestrue ,则listDatabases仅返回用户对其拥有特权的数据库(包括用户对其具有特定集合特权的数据库)。

  • 如果 authorizedDatabasesfalse,并且

如需了解更多信息,请参阅行为

comment
any

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

启用身份验证后,listDatabases 命令会根据为执行命令的用户分配的权限和 authorizedDatabases 命令选项返回不同的值:

  • 如果未指定 authorizedDatabases,并且

    • 如果用户对集群资源执行 listDatabases 操作,listDatabases 命令将返回所有数据库。

    • 如果用户未对集群执行 listDatabases 操作,listDatabases 命令仅返回用户拥有特权的数据库(包括用户在特定集合上拥有特权的数据库)。

  • 如果 authorizedDatabasestruelistDatabases 命令仅返回用户拥有权限的数据库(包括用户拥有特定集合权限的数据库)。

  • 如果 authorizedDatabasesfalse,并且

从 MongoDB 4.2 开始,如果在操作完成之前,发出 listDatabases 的客户端断开连接,MongoDB 将使用killOplistDatabases 标记为终止。

若要在副本集节点上运行,listDatabases 操作要求该节点处于 PRIMARYSECONDARY 状态。如果该节点处于其他状态,如 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
}

版本 3.6 中的新增功能

admin 数据库运行 listDatabases。指定 nameOnly: true 选项:

db.adminCommand( { listDatabases: 1, nameOnly: true} )

以下是使用 nameOnly: true 选项运行时的 listDatabases 结果示例:

{
"databases" : [
{
"name" : "admin"
},
{
"name" : "local"
},
{
"name" : "test"
}
],
"ok" : 1
}

版本 3.6 中的新增功能

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

类型:数组

文档数组,其中每个文档都包含单个数据库的信息。

listDatabases.databases.name

类型:字符串

数据库名称。

listDatabases.databases.sizeOnDisk

类型:整数

磁盘上数据库文件的总大小(以字节表示)。

listDatabases.databases.empty

类型:布尔值

指定数据库是否为空。

listDatabases.databases.shards

类型:文档

shards 文档中的每个元素都包含一个字段,该字段的键提供该分片上集合的名称,其值表示该集合的大小(以字节为单位)。

shards 仅当 nameOnly: false 时才出现在输出中。

请参阅分片集群,了解详情。

listDatabases.totalSize

类型:整数

所有 sizeOnDisk 字段的总和(以字节为单位)。

listDatabases.totalSizeMb

类型:整数

所有 sizeOnDisk 字段的总和,以兆字节表示。

listDatabases.ok

类型:整数

命令的返回值。值为 1 表示成功。

后退

listCollections