如何在mongosh中创建GridFSBucket并添加文件?求官方可行示例
在mongosh中使用GridFSBucket的正确方法
可以在mongosh中使用GridFSBucket,无需手动引入mongodb模块,mongosh已经内置了相关API,之前的错误是因为套用了Node.js驱动的用法,未适配mongosh的环境。
错误原因解析
ReferenceError: mongo is not defined:mongosh全局环境中没有mongo命名空间,Node驱动的mongo.GridFSBucket写法不适用。TypeError: db.collection is not a function:通过require('mongodb')引入的GridFSBucket需要Node驱动原生的Db实例,但mongosh中的db是经过包装的对象,二者不兼容。
正确操作步骤
1. 切换到目标数据库
use myDb
2. 创建GridFSBucket实例
mongosh全局提供GridFSBucket构造函数,需要传入Mongo客户端实例(通过db.getMongo()获取),并指定数据库名和桶名:
const bucket = new GridFSBucket(db.getMongo(), { dbName: 'myDb', bucketName: 'myCustomBucket' });
3. 向桶中写入文件
以下是两种常见的文件写入示例:
示例1:上传本地文件
mongosh支持fs模块,可以直接读取本地文件并上传:
const fs = require('fs'); const fileContent = fs.readFileSync('/path/to/your/local/file.txt'); const uploadStream = bucket.openUploadStream('uploaded_file.txt'); uploadStream.end(fileContent); uploadStream.on('finish', () => { print('文件上传完成'); });
示例2:直接写入文本内容
无需本地文件,直接创建并写入文本数据:
const uploadStream = bucket.openUploadStream('hello_gridfs.txt'); uploadStream.write('Hello from mongosh GridFS!'); uploadStream.end(); uploadStream.on('finish', () => { print('文本文件创建完成'); });
4. 验证文件是否存在
可以通过查询GridFS的集合确认文件状态:
// 查询文件元数据集合 db.myCustomBucket.files.find().pretty() // 查询文件块数据集合 db.myCustomBucket.chunks.find()
内容的提问来源于stack exchange,提问作者VaadD
相关产品推荐
相关产品推荐

