mongodb怎么存储文件
时间: 2023-07-25 08:20:30 浏览: 168
在 MongoDB 中存储文件可以使用 GridFS,它是 MongoDB 提供的一种用于存储和检索大型文件的机制。
GridFS 将文件分割成若干个块(默认大小为 256KB),然后将这些块存储到两个集合中:
- `fs.files` 集合:存储文件的基本信息(如文件名、文件大小、上传日期等)。
- `fs.chunks` 集合:存储文件的实际内容(以块的形式存储)。
使用 GridFS 存储文件的步骤如下:
1. 创建 GridFSBucket 对象:
```
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017/mydb';
const client = new MongoClient(uri);
async function run() {
try {
await client.connect();
const db = client.db('mydb');
const bucket = new mongodb.GridFSBucket(db);
// ... 其他操作
} finally {
await client.close();
}
}
run().catch(console.dir);
```
2. 上传文件:
```
const fs = require('fs');
const uploadStream = bucket.openUploadStream('my-file.txt');
const fileStream = fs.createReadStream('/path/to/my-file.txt');
fileStream.pipe(uploadStream);
```
3. 下载文件:
```
const downloadStream = bucket.openDownloadStreamByName('my-file.txt');
downloadStream.pipe(fs.createWriteStream('/path/to/my-file.txt'));
```
除了上传和下载外,GridFS 还提供了其他 API,例如删除文件、查找文件等。需要注意的是,GridFS 存储的文件会占用较大的存储空间,因此需要合理使用。
阅读全文