面试题答案
一键面试- 默认分块大小: 在MongoDB GridFS存储机制里,默认情况下,文件分块的大小是256KB(262144字节)。
- 调整分块大小操作:
在使用GridFS进行文件存储时,若要调整分块大小,在使用
gridfs
模块(例如在Node.js环境下)进行文件上传操作时,可以在相关的函数参数中指定分块大小。以Node.js的mongodb
模块操作GridFS为例:
在Python的const { MongoClient } = require('mongodb'); const uri = "mongodb://localhost:27017"; const client = new MongoClient(uri); async function uploadFileWithCustomChunkSize() { try { await client.connect(); const db = client.db('yourDatabaseName'); const bucket = new db.GridFSBucket(db, { chunkSizeBytes: 524288 // 这里设置分块大小为512KB }); const uploadStream = bucket.openUploadStream('yourFileName'); // 假设这里有一个可读流sourceStream代表要上传的文件 sourceStream.pipe(uploadStream); await new Promise((resolve, reject) => { uploadStream.on('finish', resolve); uploadStream.on('error', reject); }); } finally { await client.close(); } } uploadFileWithCustomChunkSize();
pymongo
库中操作GridFS时:
不同的编程语言和MongoDB驱动库设置方式可能略有不同,但基本思路是在创建GridFS相关操作对象时,指定from pymongo import MongoClient from gridfs import GridFS client = MongoClient('mongodb://localhost:27017') db = client['yourDatabaseName'] fs = GridFS(db, chunk_size=524288) # 设置分块大小为512KB with open('your_file_path', 'rb') as file: fs.put(file, filename='yourFileName')
chunkSizeBytes
(或类似含义的参数)来调整分块大小。