MongoDB + PHP:如何查询存储在mongodb对象中的文档大小?在撰写本文时(最近从4MB增加),文档限制为16MB。
如何使用ObjectId查询文档的大小?
答案 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));