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

时间:2012-05-02 02:33:39

标签: php mongodb mongodb-php mongodb-query

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

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

1 个答案:

答案 0 :(得分:5)

Object.bsonsize(document)是您所追求的功能。我正在阅读this thread并找到一些关于如何在php中进行操作的建议。最简单的可能是查询文档对象并在strlen'd对象上运行bson_encode,为您提供以字节为单位的大小。

$byteSize = strlen( bson_encode( $yourDocument ) ); 

如果您想要对大量文档进行检查,请在循环中查看,而不回读每个文档,您需要运行命令execute(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"]; 
} 

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

$myDocSize = documentSize(array("_id"=>$id));