You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:01:37