English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O GridFS é um padrão do MongoDB para armazenar e recuperar arquivos grandes, como imagens, arquivos de áudio, vídeos, etc. Ele é semelhante a um sistema de arquivos para armazenar arquivos, mas seus dados são armazenados em coleções do MongoDB. O GridFS pode armazenar até mesmo arquivos maiores que o limite de tamanho do documento.16mb) arquivos.
O GridFS divide os arquivos em múltiplos blocos e armazena cada bloco de dados em documentos separados, com o tamanho máximo de cada arquivo de255k.
Por padrão, o GridFS usa duas coleções,fs.files
efs.chunks
Armazena os metadados do arquivo e os blocos. Cada bloco é identificado pelo campo ObjectId único _id. fs.files como documento pai.files_id
Os campos do documento fs.chunks ligam os blocos ao seu pai.
A seguir está o documento exemplo da coleção fs.files-
{ "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5: ""7b762939321e146569b07f72c62cca4f", "length": NumberInt(646) }
Este documento especifica o nome do arquivo, o tamanho do bloco, a data de upload e o comprimento.
A seguir está o documento exemplo do documento fs.chunks-
{ "files_id": ObjectId("534a75d19f54bfec8a2fe44b") "n": NumberInt(0), "data": "Mongo Binary Data" }
Agora, usaremosput
comando para armazenar mp no GridFS3arquivos. Para isso, usaremosmongofiles.exe
Utilitários na pasta bin do diretório de instalação do MongoDB.
Abra o Prompt de Comandos, navegue até a pasta bin do diretório de instalação do MongoDB e execute o mongofiles.exe, em seguida, digite o seguinte código-
>mongofiles.exe -d gridfs put song.mp3
aquigridfs
É o nome do banco de dados onde será armazenado o arquivo. Se o banco de dados não existir, o MongoDB criará automaticamente um novo documento dinamicamente. Song.mp3é o nome do arquivo carregado. Para visualizar o documento do arquivo na base de dados, você pode usar a consulta find-
>db.fs.files.find()
O comando acima retornou os seguintes documentos-
{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3" chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41" length: 10401959 }
Podemos usar o seguinte código, usando o ID do documento retornado na consulta anterior para visualizar todos os blocos relacionados ao arquivo armazenado na coleção fs.chunks:
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
Para mim, a consulta retornou40 documentos, o que significa que todo o mp3Os documentos são divididos em40 blocos de dados.