定义
兼容性
此命令可用于以下环境中托管的部署:
- 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.If the user does not have
listDatabasesaction on the cluster,listDatabasescommand returns only the databases for which the user has privileges (including databases for which the user has privileges on specific collections).
If
authorizedDatabasesistrue,listDatabasescommand returns only the databases for which the user has privileges (including databases for which the user has privileges on specific collections).如果
authorizedDatabases为false,并且If the user has
listDatabasesaction on the cluster,listDatabasescommand returns all databasesIf the user does not have
listDatabasesaction on the cluster,listDatabasescommand errors with insufficient permissions.
客户端断开连接
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 选项以仅列出与过滤器条件匹配的数据库。
例如,以下过滤器仅返回名称与指定的 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" : { "shard01" : 28672, "shard02" : 8192, "config" : 139264 } }, { "name" : "test", "sizeOnDisk" : 12288, "empty" : false, "shards" : { "shard01" : 12288 } } ], "totalSize" : 204800, "totalSizeMb" : 0, "ok" : 1 }
提示
输出
listDatabases.databases.shards类型:文档
shards文档中的每个字段都使用分片名称作为关键,并使用数据库的大小(以字节为单位)作为值。shards仅当nameOnly: false时才出现在输出中。请参阅分片集群,了解详情。