O MongoDB também oferece recursos que vão além das operações de banco de dados. Por exemplo, ele oferece uma boa solução para armazenar arquivos grandes e pequenos no banco de dados.
Os arquivos são automaticamente divididos em blocos. Se MongoDB é executado em um ambiente de auto-sharded, pedaços de arquivo também são replicados em vários servidores.
Armazenar arquivos é surpreendentemente muito difícil, um problema para resolver de forma eficiente, especialmente quando você precisa gerenciar um grande número de arquivos. Salve arquivos em um sistema de arquivos local muitas vezes não é boa solução.
Um exemplo dessa dificuldade é o problema que o YouTube tinha eficientemente servir miniaturas de milhões de vídeos , ou mesmo os cortes realizados pelo Facebook eficientemente servir milhares de milhões de fotos .
MongoDB resolve este problema através da criação de duas coleções internas: os arquivos collection para manter informações sobre os metadados de arquivos e os chunks collection mantém informações sobre os pedaços do arquivo.
Se você quer armazenar um arquivo de vídeo grande, você usaria um código como este:
[php]$metadata = array(
<pre> "filename" => "path.avi",
"downloads" => 0,
"comment" => "This file is foo bar",
"permissions" => array(
"crodas" => "write",
"everybody" => "read",
)
);
$grid = $db->getGridFS();
$grid->storeFile("/file/to/path.avi", $metadata);[/php]
Como você pode ver é simples de entender. #ficadica
parte retirada do artigo: http://www.phpclasses.org/blog/post/118-Developing-scalable-PHP-applications-using-MongoDB.html