I’m trying to get results of db.stats() mongo shell command in my python code (for monitoring purposes).
But unlike for example serverStatus I can’t do db.command('stats'). I was not able to find any API equivalent in mongodb docs. I’ve also tried variations with db.$cmd but none of that worked.
So,
Small question: how can I get results of db.stats() (number of connections/objects, size of data & indexes, etc) in my python code?
Bigger question: can anyone explain why some of shell commands are easily accessible from API, while others are not? It’s very annoying: some admin-related tools are accessible via db.$cmd.sys, some via db.command, some via …? Is there some standard or explanation of this situation?
PS: mongodb 2.0.2, pymongo 2.1.0, python 2.7
The Javascript shell’s
statscommand helper actually invokes a command nameddbstats, which you can run from PyMongo using theDatabase.commandmethod. The easiest way to find out what command a shell helper will run is to invoke the shell helper without parentheses — this will print out the Javascript code it runs:As for why some commands have helpers and others do not, it’s largely a question of preference, time, and perceived frequency of use by the driver authors. You can run any command by name with
Database.command, which is just a convenience wrapper arounddb.$cmd.find_one. You can find a full list of commands at List of Database Commands. You can also submit a patch against PyMongo to add a helper method for commands you find that you need to invoke frequently but aren’t supported by PyMongo yet.