listDatabases
定义
兼容性
此命令可在以下环境中部署的以下环境中使用
MongoDB Atlas:云中MongoDB部署的完全托管服务
注意
此命令在所有MongoDB Atlas集群中都受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅、自我管理的MongoDB版本
MongoDB Community:源代码可用、免费使用且可自我管理的MongoDB版本
语法
db.adminCommand( { listDatabases: 1 } )
值(例如 1
)不会影响命令的输出。
命令字段
该命令可以接受以下可选字段
字段 | 类型 | 描述 |
---|---|---|
filter | document | |
仅名称 | 布尔值 | 可选。一个标志,表示命令是否仅返回数据库名称,还是同时返回数据库名称和大小信息。 默认值是 |
授权数据库 | 布尔值 | 可选。一个标志,用于确定在启用访问控制时返回哪些数据库。
有关更多信息,请参阅行为。 |
注释 | 任何 | 可选。附加到此命令的用户提供的注释。一旦设置,此注释将出现在以下位置的此命令记录旁边
注释可以是任何有效的 BSON 类型(字符串、整数、对象、数组等)。 |
行为
当启用 身份验证 时,listDatabases
命令根据执行命令的用户分配的权限和 authorizedDatabases
命令选项返回不同的值。
如果未指定
authorizedDatabases
,并且如果用户在集群资源上具有
listDatabases
操作,则listDatabases
命令返回所有数据库。如果用户在集群上没有
listDatabases
操作权限,listDatabases
命令仅返回用户具有权限的数据库(包括用户具有特定集合权限的数据库)。
如果
authorizedDatabases
为true
,listDatabases
命令仅返回用户具有权限的数据库(包括用户具有特定集合权限的数据库)。如果
authorizedDatabases
设置为false
,并且如果用户在集群上具有
listDatabases
操作,则listDatabases
命令返回所有数据库。如果用户在集群上没有
listDatabases
操作,则listDatabases
命令因权限不足而错误。
客户端断开连接
从 MongoDB 4.2 开始,如果发出 listDatabases
的客户端在操作完成之前断开连接,MongoDB 将使用 killOp
将 listDatabases
标记为终止。
副本集成员状态限制
要在副本集成员上运行,listDatabases
操作需要成员处于PRIMARY
或SECONDARY
状态。如果成员处于其他状态,例如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.shards
类型:文档
在
shards
文档中的每个元素都包含一个字段,该字段的键给出了该分片上的集合的名称,其值表示集合的大小,以字节为单位。shards
仅在nameOnly: false
时出现。有关详细信息,请参阅 分片集群。