Mongodb не отображает коллекции при удаленном подключении из CentOS

Сервер Mongo: клиент Windows 10 (хост): CentOS 6.2, виртуальный ящик vm на хосте Windows 10. На самом деле это облачная виртуальная машина быстрого запуска. Проблема: mongodb подключается к удаленному серверу (от CentOS до Windows) через терминал, нормально отображает базы данных, но «показать коллекции» просто возвращает пустое значение. Тем не менее, коллекции доступны, потому что я могу запросить любую коллекцию, и подсчет также дает мне правильные результаты. С другой стороны, я подключился к тому же серверу mongo из IntelliJ, и он отлично показывает все коллекции.

Просто любопытно, почему это происходит. Любые комментарии?

Боковое примечание: есть ли команда mongodb для подсчета количества коллекций в базе данных?

Спасибо

_Вамси


person Vamsi    schedule 08.12.2016    source источник


Ответы (1)


Убедитесь, что вы используете базу данных, для которой хотите показать коллекции. Возможно, вы используете базу данных, в которой нет коллекций.

> use desiredDatabase
> show collections

Если список по-прежнему пуст, попробуйте войти в систему с учетной записью администратора. Пользователь должен иметь возможность выполнить действие listCollections. Роль dbAdmin включает действие listCollections.

Чтобы получить количество, вы можете использовать функцию getCollectionNames, которая возвращает массив, и вы можете получить из него длину.

> db.getCollectionNames().length
person logan rakai    schedule 08.12.2016
comment
Спасибо, Логан. Конечно, я использую правильную базу данных. Вторая часть информации хороша. Танки за это. - person Vamsi; 08.12.2016
comment
Если вы создаете коллекцию из терминала, она отображается? Например. db.collection.insert({a:1}) затем db.getCollectionNames() показывает collection? - person logan rakai; 08.12.2016
comment
Я могу добавить коллекцию, без проблем. Но «показать коллекции» и db.getCollectionNames() оба показывают пустые. Тем не менее, я могу запросить новую коллекцию просто отлично. Странный. - person Vamsi; 09.12.2016
comment
Должно быть, потому что пользователь, под которым вы входите, не имеет соответствующего разрешения. Я обновлю ответ. - person logan rakai; 09.12.2016
comment
Логан: Теперь я могу получить доступ к коллекциям. Моя догадка в то время, может быть, я использовал коллекцию по умолчанию test и на самом деле не переключился на нужную коллекцию. Спасибо за ваш ответ. - person Vamsi; 06.01.2017