MongoDB: как получить db.stats () из API - PullRequest
5 голосов
/ 04 января 2012

Я пытаюсь получить результаты команды оболочки db.stats () mongo в моем коде python (для целей мониторинга).

Но в отличие, например, от serverStatus я не могу сделать db.command('stats'). Мне не удалось найти какой-либо эквивалент API в документации mongodb. Я также пробовал варианты с db.$cmd, но ничего из этого не сработало.

Итак,

Небольшой вопрос: как я могу получить результаты db.stats() (количество соединений / объектов, размер данных и индексов и т. Д.) В моем коде Python?

Большой вопрос: может ли кто-нибудь объяснить, почему некоторые команды оболочки легко доступны из API, а другие нет? Это очень раздражает: некоторые инструменты для администрирования доступны через db.$cmd.sys, некоторые через db.command, некоторые через ...? Есть какой-то стандарт или объяснение этой ситуации?

PS: mongodb 2.0.2, pymongo 2.1.0, python 2.7

1 Ответ

11 голосов
/ 04 января 2012

Помощник команды stats оболочки Javascript фактически вызывает команду с именем dbstats, которую вы можете запустить из PyMongo, используя Database.command метод .Самый простой способ выяснить, какую команду будет выполнять помощник оболочки, - это вызвать помощник оболочки без скобок - это выведет код Javascript, который он запускает:другие нет, в основном это вопрос предпочтений, времени и предполагаемой частоты использования авторами драйверов.Вы можете запустить любую команду по имени с помощью Database.command, которая является просто удобной оболочкой для db.$cmd.find_one.Вы можете найти полный список команд на Список команд базы данных .Вы также можете отправить патч против PyMongo, чтобы добавить вспомогательный метод для команд, которые вы часто вызываете, но которые еще не поддерживаются PyMongo.

...