首页 > 解决方案 > show dbs 和 show databases 之间的 MongoDB shell 区别

问题描述

根据MongoDb 文档,MongoDB shell 命令:

show dbs

打印服务器上所有数据库的列表。

show databases

打印所有可用数据库的列表。


我很困惑-从我阅读和理解的内容来看,这些不是相同的效果命令-对吗?show databases是不是show dbs的别名?
可能存在由show dbs列出的数据库,该数据库不可用且未由show databases列出,对吗?

如果是这样,数据库如何可能在服务器上但不可用 - 用户的访问权限?这就是显示数据库过滤背后的原因吗?

标签: mongodbconsole

解决方案


我认为这两个命令之间没有区别。listDatabases这两个操作都使用相同的选项调用命令。

增加日志级别,show dbs记录的命令:

2018-11-30T15:40:59.539-0800 I COMMAND  [conn23] command admin.$cmd appName: "MongoDB Shell" command: listDatabases { listDatabases: 1.0, $clusterTime: { clusterTime: Timestamp(1543621253, 1), signature: { hash: BinData(0, 0000000000000000000000000000000000000000), keyId: 0 } }, $db: "admin" } numYields:0 reslen:708 locks:{ Global: { acquireCount: { r: 22 } }, Database: { acquireCount: { r: 10 } } } protocol:op_msg 38ms

show databases记录:

2018-11-30T15:41:01.722-0800 I COMMAND  [conn23] command admin.$cmd appName: "MongoDB Shell" command: listDatabases { listDatabases: 1.0, $clusterTime: { clusterTime: Timestamp(1543621253, 1), signature: { hash: BinData(0, 0000000000000000000000000000000000000000), keyId: 0 } }, $db: "admin" } numYields:0 reslen:708 locks:{ Global: { acquireCount: { r: 22 } }, Database: { acquireCount: { r: 10 } } } protocol:op_msg 5ms

作为参考,这是来自 MongoDB 3.6.7。


推荐阅读