English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
GridFS è una specifica MongoDB utilizzata per memorizzare e recuperare file di grandi dimensioni, come immagini, file audio, video e altro. È simile a un sistema di file per memorizzare file, ma i dati vengono memorizzati in raccolte MongoDB. GridFS può memorizzare file anche più grandi del limite di dimensione dei documenti (16mb).
GridFS suddivide i file in più blocchi e memorizza ogni blocco di dati in un documento separato, con una dimensione massima del file di 255k.
Per impostazione predefinita, GridFS utilizza due raccolte:fs.files
efs.chunks
Memorizza i metadati dei file e i blocchi. Ogni blocco è identificato dal campo univoco _id ObjectId. fs.files come documento genitore.files_id
Il campo fs.chunks nel documento collega i blocchi ai loro genitori.
Ecco un esempio di documento per la raccolta fs.files-
{ "filename": "test.txt" "chunkSize": NumberInt(261120) "uploadDate": ISODate("2014-04-13T11:32:33.557Z") "md5": "7b762939321e146569b07f72c62cca4f" "length": NumberInt(646) }
Il documento specifica il nome del file, la dimensione del blocco, la data di caricamento e la lunghezza.
Ecco un esempio di documento per fs.chunks-
{ "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data" }
Ora, useremoput
Il comando utilizza GridFS per memorizzare file mp3. Per questo, useremomongofiles.exe
Utilità nella cartella bin della cartella di installazione di MongoDB.
Aprire il prompt dei comandi, navigare alla cartella bin della cartella di installazione di MongoDB e digitare il seguente codice-
>mongofiles.exe -d gridfs put song.mp3
quigridfs
Il nome del database in cui verranno memorizzati i file. Se il database non esiste, MongoDB crea automaticamente un nuovo documento dinamico. Song.mp3 è il nome del file caricato. Per visualizzare il documento del file nel database, è possibile utilizzare la query find-
>db.fs.files.find()
Il comando sopra ha restituito il seguente documento-
{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 }
Possiamo anche utilizzare il seguente codice per visualizzare tutti i blocchi correlati al file di archiviazione nella collezione fs.chunks utilizzando l'ID del documento restituito dalla query precedente:
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
Per me, questa query ha restituito 40 documenti, il che significa che l'intero documento mp3 è diviso in 40 blocchi di dati.