MongoDB + PHP:如何查询对象大小?

Kyl*_*son 0 php mongodb mongodb-php mongodb-query

MongoDB + PHP:如何查询存储在mongodb对象中的文档大小?在撰写本文时(最近从4MB增加),文档限制为16MB.

如何使用ObjectId查询文档的大小?

Lou*_*uis 5

Object.bsonsize(document)是你追求的功能.我正在阅读这个帖子,并找到一些关于如何在PHP中做到这一点的建议.最简单的可能是查询文档对象并strlenbson_encode'd对象上运行,为您提供以字节为单位的大小.

$byteSize = strlen( bson_encode( $yourDocument ) ); 
Run Code Online (Sandbox Code Playgroud)

如果你想要检查很多文档,比如循环,不回读每个文档,你需要运行一个命令执行(Mardix发布了这个小函数来做到这一点 - 注意:它可以容易被重写一点,以避免硬编码和全局变量):

$DBName = "MyDBName"; 
$MongoDB = new MongoDB(new Mongo(),$DBName); 

function documentSize(Array $Criteria){ 
  global $MongoDB; 
  $collectionName = "MyCollection"; 
  $jsonCriteria = json_encode($Criteria); 
  $code = "function(){ 
    return Object.bsonsize(db.{$collectionName}.findOne({$jsonCriteria})) 
  }"; 

  $resp = $MongoDB->execute($code); 
  return $resp["retval"]; 
} 
Run Code Online (Sandbox Code Playgroud)

PHP示例,其中$ id是文档ID

$myDocSize = documentSize(array("_id"=>$id)); 
Run Code Online (Sandbox Code Playgroud)