MongoDB外壳';php和python中的sdb.stats()


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

我可以从Mongo-shell中看到的统计信息

db.stats()

db.collection_name.stats()

如何从PHP和Python中查看数据库或集合的统计信息。

编辑:我用PHP做过,但仍然不能用Python做。

帮助?

如果使用PyMongo驱动程序,这就是在Python中执行此操作的方法:


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".  

参考文献:

  • db.command()
  • MongoDB:如何从API获取db.stats()
  • 这就是您在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()
    

    但是如何在python中做到这一点?

    我发现用Mongoengine模型实现这一点的最简单方法是:

    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())
    

    这应该允许使用mongoengine的配置设置对集合和数据库进行透明的更改。

    这是用新的MongoDB驱动程序执行dbStats命令的PHP代码:

    $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']);
    }