GridFS (GridFS)
GridFS: ذخیره فایلهای بزرگ 📁
GridFS یک specification برای ذخیره و بازیابی فایلهای بزرگتر از 16MB در MongoDB است. MongoDB documents نمیتوانند بزرگتر از 16MB باشند، بنابراین GridFS فایلها را به chunks تقسیم میکند.
چرا GridFS؟
- ذخیره فایلهای بزرگتر از 16MB
- ذخیره metadata همراه با فایل
- قابلیت range queries (دانلود بخشی از فایل)
- استفاده از indexes برای جستجوی فایلها
ساختار GridFS:
GridFS از دو collection استفاده میکند:
- fs.files: metadata فایلها
- fs.chunks: chunks داده (هر chunk حداکثر 255KB)
استفاده با mongofiles:
// آپلود فایل
mongofiles put video.mp4
// آپلود با metadata
mongofiles put --metadata '{{"author":"Ali","category":"tutorial"}}' video.mp4
// دانلود فایل
mongofiles get video.mp4
// لیست فایلها
mongofiles list
// جستجوی فایل
mongofiles search tutorial
// حذف فایل
mongofiles delete video.mp4
استفاده در Node.js:
const { MongoClient, GridFSBucket } = require('mongodb');
const client = new MongoClient(uri);
await client.connect();
const db = client.db('mydb');
const bucket = new GridFSBucket(db);
// آپلود فایل
const uploadStream = bucket.openUploadStream('video.mp4', {{
metadata: {{ author: 'Ali', category: 'tutorial' }}
}});
fs.createReadStream('./video.mp4').pipe(uploadStream);
// دانلود فایل
const downloadStream = bucket.openDownloadStreamByName('video.mp4');
downloadStream.pipe(fs.createWriteStream('./downloaded-video.mp4'));
💡 نکته: GridFS برای فایلهای بزرگ مثل ویدیوها، تصاویر با کیفیت بالا، و documents بزرگ استفاده میشود. برای فایلهای کوچک، بهتر است از BSON Binary Data استفاده کنید.
✅ یاد گرفتید: GridFS برای ذخیره فایلهای بزرگتر از 16MB استفاده میشود و فایلها را به chunks تقسیم میکند!
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.