English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

GridFS MongoDB

GridFS est une norme MongoDB pour le stockage et la récupération de fichiers de grande taille, tels que des images, des fichiers audio, des fichiers vidéo, etc. Il est similaire à un système de fichiers pour stocker des fichiers, mais ses données sont stockées dans des collections MongoDB. GridFS peut stocker même des fichiers plus grands que la limite de taille des documents.16mb) des fichiers.

GridFS divise les fichiers en plusieurs blocs et stocke chaque bloc de données dans un document séparé, avec une taille maximale de fichier de255k.

Par défaut, GridFS utilise deux collections,fs.filesetfs.chunksStocke les métadonnées du fichier et les blocs. Chaque bloc est identifié par un champ unique _id ObjectId. fs.files en tant que document parent.files_idLes champs du document fs.chunks lient les blocs à leur parent.

Voici un exemple de document pour la collection fs.files-

{
   "filename": "test.txt",
   "chunkSize": NumberInt(261120),
   "uploadDate": ISODate("2014-04-13T11:32:33.557Z"),
   "md5: ""7b762939321e146569b07f72c62cca4f",
   "length": NumberInt(646)
}

Ce document spécifie le nom de fichier, la taille du bloc, la date de téléchargement et la longueur.

Voici un exemple de document pour fs.chunks-

{
   "files_id": ObjectId("534a75d19f54bfec8a2fe44b"),
   "n": NumberInt(0),
   "data": "Mongo Binary Data"
}

Ajouter le fichier à GridFS

Maintenant, nous allons utiliserputCommande pour stocker mp dans GridFS3Pour cela, nous utiliseronsmongofiles.exeUtilitaires situés dans le dossier bin du dossier d'installation de MongoDB.

Ouvrez l'invite de commande, naviguez vers le dossier bin du dossier d'installation de MongoDB et entrez le code suivant-

>mongofiles.exe -d gridfs put song.mp3

icigridfsC'est le nom de la base de données où le fichier sera stocké. Si la base de données n'existe pas, MongoDB créera automatiquement un nouveau document dynamiquement. Song.mp3est le nom du fichier téléchargé. Pour voir les documents des fichiers dans la base de données, vous pouvez utiliser la requête find-

>db.fs.files.find()

La commande ci-dessus a retourné les documents suivants-

{
   _id: ObjectId('534a811bf8b4aa4d33fdf94d'), 
   filename: "song.mp3" 
   chunkSize: 261120, 
   uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41"
   length: 10401959 
}

Nous pouvons également utiliser le code suivant, en utilisant l'ID de document retourné par la requête précédente pour voir tous les blocs associés au fichier stocké dans la collection fs.chunks :

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')}

Pour ma part, cette requête a retourné40 documents, ce qui signifie que tout le mp3Les documents sont divisés40 blocs de données.