在MongoDB中存儲海量文件,可以使用GridFS,它是MongoDB提供的一種存儲大文件的機制。
GridFS將大文件分割成多個小的塊(chunks),每個塊的默認大小為255KB,然后將這些塊存儲在一個名為"chunks"的集合中。同時,它還會在一個名為"files"的集合中存儲文件的元數據。
以下是使用GridFS存儲海量文件的步驟:
創建一個GridFS對象:
const gridfs = require('gridfs-stream');
const mongoose = require('mongoose');
gridfs.mongo = mongoose.mongo;
const conn = mongoose.createConnection('mongodb://localhost/mydatabase');
const gfs = gridfs(conn.db);
將文件存儲到GridFS中:
const fs = require('fs');
const writestream = gfs.createWriteStream({ filename: 'example.txt' });
fs.createReadStream('path/to/example.txt').pipe(writestream);
從GridFS中獲取文件:
const readstream = gfs.createReadStream({ filename: 'example.txt' });
readstream.pipe(fs.createWriteStream('path/to/save/example.txt'));
刪除GridFS中的文件:
gfs.files.remove({ filename: 'example.txt' }, (err) => {
if (err) {
console.log(err);
}
console.log('File deleted');
});
GridFS提供了一種有效的方式來存儲和檢索海量文件,并且能夠處理大于16MB的文件。