Object.bsonsize(document)
- это функция, которой вы пользуетесь. Я читаю this thread и нахожу несколько предложений о том, как это сделать в php. Самый простой, возможно, запрос объекта документа и запуск strlen
на объекте bson_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"];
}
PHP пример, где $ идентификатор является идентификатор документа
$myDocSize = documentSize(array("_id"=>$id));
затем снова, если вас беспокоит ограничение, вы должны использовать GridFS. – Louis
Как получить сразу несколько документов в запросе? – leon