文档菜单
文档首页
/
MongoDB 手册
/ / /

listDatabases

在本页

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

《code class="leafygreen-ui-1l06pbn">listDatabases命令返回所有现有数据库的无序列表以及每个数据库的基本统计信息。您必须在admin数据库上运行listDatabases命令。

此命令可在以下环境中部署的以下环境中使用

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

注意

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

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

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

db.adminCommand(
{
listDatabases: 1
}
)

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

该命令可以接受以下可选字段

字段
类型
描述
filter
document

可选。一个查询谓词,用于确定哪些数据库被列出。

您可以在listDatabases的输出中的任何字段上指定一个条件

  • 名称

  • 磁盘大小

  • 是否为空

  • 分片

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

仅名称
布尔值

可选。一个标志,表示命令是否仅返回数据库名称,还是同时返回数据库名称和大小信息。

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

授权数据库
布尔值

可选。一个标志,用于确定在启用访问控制时返回哪些数据库。

  • 如果未指定authorizedDatabases,并且

    • 如果用户在集群资源上具有listDatabases操作,则listDatabases命令返回所有数据库。

    • 如果用户在集群上没有listDatabases操作,则listDatabases返回用户有权限的数据库(包括用户有权限的特定集合的数据库)。

  • 如果authorizedDatabases设置为true,则listDatabases返回用户有权限的数据库(包括用户有权限的特定集合的数据库)。

  • 如果authorizedDatabases设置为false,并且

    • 如果用户在集群上具有listDatabases操作,则listDatabases命令返回所有数据库。

    • 如果用户在集群上没有listDatabases操作,则listDatabases命令因权限不足而错误。

有关更多信息,请参阅行为。

注释
任何

可选。附加到此命令的用户提供的注释。一旦设置,此注释将出现在以下位置的此命令记录旁边

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

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

  • 如果未指定authorizedDatabases,并且

    • 如果用户在集群资源上具有listDatabases操作,则listDatabases命令返回所有数据库。

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

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

  • 如果authorizedDatabases设置为false,并且

    • 如果用户在集群上具有listDatabases操作,则listDatabases命令返回所有数据库。

    • 如果用户在集群上没有listDatabases操作,则listDatabases命令因权限不足而错误。

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

要在副本集成员上运行,listDatabases操作需要成员处于PRIMARYSECONDARY状态。如果成员处于其他状态,例如STARTUP2,则操作会出错。

admin数据库上运行listDatabases

db.adminCommand( { listDatabases: 1 } )

示例输出

{
"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} )

示例输出

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

admin 数据库运行 listDatabases 命令。指定 filter 选项,只列出匹配指定过滤条件的数据库。

例如,以下指定了一个过滤条件,使得 listDatabases 只返回名称匹配指定 正则表达式 的数据库信息:

db.adminCommand( { listDatabases: 1, filter: { "name": /^rep/ } } )

当在 mongos 实例上执行时,listDatabases

  • shards 嵌入文档添加到每个数据库的摘要文档中,如果 nameOnly: false,并且

  • 排除 local 数据库。

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

“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