MongoDB shell's db.stats() in php and python

2019-04-06 17:31发布

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?

4条回答
女痞
2楼-- · 2019-04-06 18:00

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?

查看更多
干净又极端
3楼-- · 2019-04-06 18:01

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']);
}
查看更多
我欲成王,谁敢阻挡
4楼-- · 2019-04-06 18:02

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.

查看更多
够拽才男人
5楼-- · 2019-04-06 18:15

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
  • 查看更多
    登录 后发表回答