2012-05-02 4 views
0

MongoDB + PHP: Как вы запрашиваете размер документа, хранящегося в объекте mongodb? Предел документа на момент написания статьи (недавно поднятый с 4 МБ) составляет 16 МБ.MongoDB + PHP: Как вы запрашиваете размеры объектов?

Как я могу запросить размер документа с помощью ObjectId?

ответ

5

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)); 
+0

затем снова, если вас беспокоит ограничение, вы должны использовать GridFS. – Louis

+0

Как получить сразу несколько документов в запросе? – leon

Смежные вопросы