Согласно документации MongoDb команда оболочки MongoDB:

show dbs

Распечатайте список всех баз данных на сервере.

А также

show databases

Распечатайте список всех доступных баз данных.


Я сбит с толку - из того, что я прочитал и понял, это не те же команды эффектов, верно? show databases не является псевдонимом для show dbs ?
Там может быть база данных, указанная в show dbs , которая недоступна и не указана в show databases , верно?

Если да, то как это возможно, что база данных находится на сервере, но недоступна - право доступа пользователя? это то, что стоит за фильтрацией показать базы данных ?

4
Jimmix 30 Ноя 2018 в 22:25

1 ответ

Лучший ответ

Я не думаю, что есть разница между двумя командами. Обе операции вызывают команду 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.

2
Adam Harrison 30 Ноя 2018 в 23:45