2017-06-26 103 views
0

我目前正試圖通過php檢索mongodb的統計信息。我已經找到了運行命令(https://stackoverflow.com/a/11650724/2889265)的方法,但是執行它的方式與直接在數據庫上執行db.stats()的預期結果完全不同。這裏是我得到的:PHP MongoDB獲取統計信息

結果PHP $ this-> database-> command(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-> command(array('collStats'=>「dev」));我得到一個RuntimeException「Collection [dev.dev] not found。」。爲什麼? 找到我的RuntimeException的原因...我要求「dev」作爲collectionname,但它是數據庫的名稱。

回答

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

謝謝你的迴應。 iterator_to_array()函數是小而有用的提示。我發現我的錯誤。我只查看了命令的結果,但沒有進入MongoDB \ Driver \ Cursor Object。 – MIB

+0

你也有一個想法,爲什麼我得到RuntimeException? – MIB