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

listDatabases

在此页面上

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

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

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

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

注意

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

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

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

db.adminCommand(
{
listDatabases: 1
}
)

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

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

字段
类型
说明
filter
文档

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

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

  • name

  • sizeOnDisk

  • empty

  • shards

注意

Atlas免费和共享层级集群以及无服务器实例不支持filter选项。

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
}

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

类型:数组

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

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