دوره‌ها / MongoDB / GridFS (GridFS)

GridFS (GridFS)

15 دقیقه Article

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 تقسیم می‌کند!

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.

برای ذخیره پیشرفت وارد شوید