PHP MongoDB获取统计信息

时间:2017-06-26 08:49:12

标签: php mongodb

我目前正在尝试通过php检索mongodb的统计信息。我已经找到了运行命令(https://stackoverflow.com/a/11650724/2889265)的方法,但是除了执行它之外,响应与直接在数据库上执行db.stats()的预期结果完全不同。这就是我得到的:

结果PHP $ this-> database->命令(array('dbStats'=> 1));

MongoDB\Driver\Cursor Object
(
    [database] => dev
    [collection] => 
    [query] => 
    [command] => MongoDB\Driver\Command Object
        (
            [command] => stdClass Object
                (
                    [dbStats] => 1
                )

        )

    [readPreference] => MongoDB\Driver\ReadPreference Object
        (
            [mode] => primary
        )

    [isDead] => 
    [currentIndex] => 0
    [currentDocument] => 
    [server] => MongoDB\Driver\Server Object
        (
            [host] => xxx.xxx.xxx.xxx
            [port] => 27017
            [type] => 1
            [is_primary] => 
            [is_secondary] => 
            [is_arbiter] => 
            [is_hidden] => 
            [is_passive] => 
            [last_is_master] => Array
                (
                    [ismaster] => 1
                    [maxBsonObjectSize] => 16777216
                    [maxMessageSizeBytes] => 48000000
                    [maxWriteBatchSize] => 1000
                    [localTime] => MongoDB\BSON\UTCDateTime Object
                        (
                            [milliseconds] => 1498465564742
                        )

                    [maxWireVersion] => 2
                    [minWireVersion] => 0
                    [ok] => 1
                )

            [round_trip_time] => 12
        )

)

结果 db.stats()

{
        "db" : "dev",
        "collections" : 21,
        "objects" : 7153120,
        "avgObjSize" : 818.2133580871005,
        "dataSize" : 5852778336,
        "storageSize" : 6882250752,
        "numExtents" : 71,
        "indexes" : 26,
        "indexSize" : 866189968,
        "fileSize" : 8519680000,
        "nsSizeMB" : 16,
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 5
        },
        "extentFreeList" : {
                "num" : 0,
                "totalSize" : 0
        },
        "ok" : 1
}

我做错了,我该怎么做才能获得像db.stats()这样的统计数据?

我正在使用php 7.1和作曲家包mongodb / mongodb。 MongoDB的版本为2.6.10。

第二个问题,然后我执行 $ this-> database->命令(array('collStats'=>“dev”)); 我得到一个RuntimeException“收集[dev.dev]未找到。“为什么? 找到我的RuntimeException的原因...我请求“dev”作为集合名称,但它是数据库的名称。

1 个答案:

答案 0 :(得分:1)

    $client = new \MongoDB\Client("mongodb://host:27017");
    var_dump(iterator_to_array($client->database_name->command(array('dbStats' => 1))));