【发布时间】:2012-05-02 02:33:38
【问题描述】:
MongoDB + PHP:如何查询存储在 mongodb 对象中的文档的大小?在撰写本文时(最近从 4MB 提高)的文档限制为 16MB。
如何使用 ObjectId 查询 Document 的大小?
【问题讨论】:
标签: php mongodb mongodb-php mongodb-query
MongoDB + PHP:如何查询存储在 mongodb 对象中的文档的大小?在撰写本文时(最近从 4MB 提高)的文档限制为 16MB。
如何使用 ObjectId 查询 Document 的大小?
【问题讨论】:
标签: php mongodb mongodb-php mongodb-query
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));
【讨论】: