我目前正在尝试通过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”作为集合名称,但它是数据库的名称。
答案 0 :(得分:1)
$client = new \MongoDB\Client("mongodb://host:27017");
var_dump(iterator_to_array($client->database_name->command(array('dbStats' => 1))));