定义
兼容性
此命令可用于以下环境中托管的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
db.adminCommand( { listDatabases: 1 } )
值(例如 1)不会影响命令的输出。
命令字段
该命令可以采用以下可选字段:
字段 | 类型 | 说明 |
|---|---|---|
| 文档 | 可选。确定列出哪些数据库的查询谓词。 您可以在
|
| 布尔 | 可选。该标志用于指示命令应仅返回数据库名称,还是同时返回数据库名称和大小信息。 默认值为 |
| 布尔 | 可选。该标志用于确定启用访问控制时根据用户特权返回哪些数据库。
如需了解更多信息,请参阅行为。 |
| any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
启用身份验证后, listDatabases命令会根据分配给执行该命令的用户的特权和authorizedDatabases 命令选项返回不同的值:
如果未指定
authorizedDatabases,并且If the user has
listDatabasesaction on the cluster resource,listDatabasescommand returns all databases.如果用户没有对集群执行
listDatabases动作,则listDatabases命令仅返回用户对其拥有特权的数据库(包括用户对其中的特定集合拥有特权的数据库)。
如果
authorizedDatabases为true,则listDatabases命令仅返回用户对其拥有特权的数据库(包括用户对特定集合拥有特权的数据库)。如果
authorizedDatabases为false,并且如果用户对集群执行
listDatabases动作,listDatabases命令将返回所有数据库如果用户没有对集群执行
listDatabases动作,则listDatabases命令会因权限不足而出错。
客户端断开连接
If the client that issued listDatabases disconnects before the operation completes, MongoDB marks listDatabases for termination using killOp.
副本集节点状态限制
To run on a replica set member, listDatabases operations require the member to be in PRIMARY or SECONDARY state. If the member is in another state, such as STARTUP2, the operation errors.
示例
列出数据库名称和大小
针对 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 仅返回名称与指定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.shards类型:文档
shards文档中的每个元素都包含一个字段,该字段的键提供该分片上集合的名称,其值表示该集合的大小(以字节为单位)。shards仅当nameOnly: false时才出现在输出中。请参阅分片集群,了解详情。