根据MongoDb documentation MongoDB shell命令:
show dbs
打印服务器上所有数据库的列表。
和
show databases
打印所有可用数据库的列表。
我很困惑-从我所阅读和理解的内容来看,这些命令不是相同的效果-对吗? 显示数据库不是显示数据库的别名吗?
可能是 show dbs 列出的数据库不可用,而 show database 却没有列出该数据库吗?
如果是这样,数据库怎么可能在服务器上但不可用-用户的访问权? 显示数据库过滤的背后是什么?
答案 0 :(得分:0)
我认为这两个命令之间没有区别。这两个操作都使用相同的选项调用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。