【问题标题】:MongoDB + PHP: How do you query object sizes?MongoDB + PHP:如何查询对象大小?
【发布时间】:2012-05-02 02:33:38
【问题描述】:

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

如何使用 ObjectId 查询 Document 的大小?

【问题讨论】:

    标签: php mongodb mongodb-php mongodb-query


    【解决方案1】:

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

    $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)); 
    

    【讨论】:

    • 再说一次,如果您担心应该使用 GridFS 的限制。
    • 如何一次获取多个文档?
    猜你喜欢
    • 2018-02-06
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多