Docs 菜单

Docs 主页开发应用程序MongoDB Manual

listDatabases

在此页面上

  • 定义
  • 语法
  • 命令字段
  • 行为
  • 举例
  • 输出
listDatabases

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

db.adminCommand(
{
listDatabases: 1
}
)

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

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

字段
类型
说明
filter
文档

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

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

  • name

  • sizeOnDisk

  • empty

  • shards

nameOnly
布尔

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

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

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

authorizedDatabases
布尔

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

  • 如果未指定 authorizedDatabases,并且

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

    • 如果用户没有对集群执行 listDatabases 动作:

      • 对于 MongoDB 4 。 0 。 6 +listDatabases命令仅返回用户对其拥有特权的数据库(包括用户对其中的特定集合拥有特权的数据库)。

      • 对于 MongoDB 4 。 0 。 5listDatabases命令仅返回用户对其数据库资源(而不是集合资源)执行find操作的数据库。

  • 如果 authorizedDatabasestrue

    • 对于 MongoDB 4 。 0 。 6 +listDatabases命令仅返回用户对其拥有特权的数据库(包括用户对其中的特定集合拥有特权的数据库)。

    • 对于 MongoDB 4 。 0 。 5listDatabases命令仅返回用户对其数据库资源(而不是集合资源)执行find操作的数据库。

  • 如果 authorizedDatabasesfalse,并且

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

comment
注意到

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

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

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

  • 如果未指定 authorizedDatabases,并且

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

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

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

  • 如果 authorizedDatabasesfalse,并且

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

要在副本集成员上运行, 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