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 db. stats() method is used to return a document that reports on the state of the current database. The scale at which to deliver results. Unless specified, this command returns all data in bytes.
dbStats.scaleFactor. scale value used by the command. If you specified a non-integer scale factor, MongoDB uses the integer part of the specified factor. For example, if you specify a scale factor of 1023.999 , MongoDB uses 1023 as the scale factor. New in version 4.2.
In MongoDB, find() method is used to select documents in a collection and return a cursor to the selected documents.
If true , db. collection. stats() returns index details in addition to the collection stats.
The Javascript shell's stats
command helper actually invokes a command named dbstats
, which you can run from PyMongo using the Database.command
method. 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:
> db.stats
function (scale) {
return this.runCommand({dbstats:1, scale:scale});
}
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 around db.$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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With