0

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

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

4

1 回答 1

6

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

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

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

$id 是文档 ID 的 PHP 示例

$myDocSize = documentSize(array("_id"=>$id)); 
于 2012-05-02T03:38:41.907 回答