Appearance
MongoDB GridFS
什么是 GridFS?
GridFS 是 MongoDB 的一种规范,用于在集合中存储超过 16MB(BSON 文档大小限制)的文件。文件被切分为多个块(chunk),元数据与块分别存在两个集合中。
两个集合
- fs.files:存储文件名、长度、上传时间、MD5、自定义元数据等。
- fs.chunks:存储文件块,每块默认 255KB,包含
files_id引用与块序号。
使用场景
- 大文件(图片、视频、备份等)存进 MongoDB。
- 需要与业务数据同一存储、同一备份与权限时。
命令行示例(mongosh)
javascript
// 需通过驱动或 mongofiles 操作,mongosh 不直接提供 GridFS API
// 以下为概念示例
// 上传:mongofiles -d mydb put myfile.pdf
// 下载:mongofiles -d mydb get myfile.pdf
// 列表:mongofiles -d mydb list在驱动中使用(Node.js 示例)
javascript
const bucket = new MongoClient(uri).db("mydb").bucket();
const stream = bucket.openUploadStream("myfile.pdf");
fs.createReadStream("./myfile.pdf").pipe(stream);
// 下载:bucket.openDownloadStreamByName("myfile.pdf")各语言驱动均提供 GridFS API,见官方文档。下一节介绍 MongoDB 固定集合。