13

I can see the statistics from Mongo shell as

db.stats()

or

db.collection_name.stats()

How do I view statistics of a database, or of a collection, from PHP and Python.

EDIT: I have done it in PHP but still cant do it in Python.

Help?

0

4 Answers 4

20

This is how you do it in Python if you are using the PyMongo driver:


connection = pymongo.Connection(host = "127.0.0.1", port = 27017)
db = connection["test_db"]
test_collection = db["test_collection"]
db.command("dbstats") # prints database stats for "test_db"
db.command("collstats", "test_collection") # prints collection-level stats for "test_collection" under "test_db".  

References:

  • db.command()
  • MongoDB: how to get db.stats() from API
  • Sign up to request clarification or add additional context in comments.

    2 Comments

    Can anyone confirm that this and docs are actually accurate? I'm getting command() missing 1 required positional argument: 'command' no matter what I pass as an argument. Has this been deprecated and not updated in docs?
    (incase anyone wants in size other than bytes, for which I struggled alot) - for passing scale you can do this: db.command("collstats", "test_collection", scale=1024*1024). This will convert into MB. You can also also change it up as you like for KB, GB, etc. However, avgObjSize will always be in bytes.
    10

    This is how you do it in PHP

    $con= new Mongo()
    
    $stats=$con->dbName->command(array('dbStats' => 1));  // for db.stats()
    
    $stats=$con->dbName->command(array('collStats' => 'collection_name')); // for db.collection_name.stats()
    

    But how to do this in python?

    Comments

    1

    The easiest way I have found to do this with a Mongoengine model was this:

    import mongoengine
    from models import MyModel
    
    connection = mongoengine.connection.get_connection()
    db = connection[MyModel._get_db().name]
    stats = db.command("collstats", MyModel._get_collection_name())
    

    This should allow transparent changes in the collection and database using mongoengine's config settings.

    Comments

    0

    This is PHP code to execute dbStats command with new MongoDB driver:

    $mongo = new \MongoDB\Driver\Manager('mongodb://localhost:27017');
    $cmdstats = new \MongoDB\Driver\Command(['dbStats' => 1]);
    $dbstats = $mongo->executeCommand('databaseName', $cmdstats);
    $dbstats->setTypeMap(array(
        'array' => 'array',
        'document' => 'array',
        'root' => 'array'
    ));
    
    // There must be only one item in $dbstats
    
    foreach ($dbstats as $dbs)
    {
        echo($dbs['dataSize']);
    }
    

    Comments

    Your Answer

    By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.