GridFS 上传文件时抛出 Command listIndexes failed 异常

GridFS throws Command listIndexes failed exception when uploading file

我无法在我的计算机上运行 GridFS。我正在使用 .Net nuget MongoDb.Driver,我正在尝试将文件上传到 mongodb,如下所示:

MongoClient client = new MongoDB.Driver.MongoClient();
IMongoDatabase dtb = client.GetDatabase("test");
GridFSBucket bucket = new GridFSBucket(dtb);
using (var stream = File.Open(@"<path>", FileMode.Open))
{
    ObjectId id = bucket.UploadFromStream("data", stream);
    var data = bucket.DownloadAsBytes(id);}

但如果失败并出现异常:"MongoDB.Driver.MongoCommandException: Command listIndexes failed: ns does not exist: test.ts.files"

相同的代码在其他计算机上有效,在我的计算机上失败。我什至重新安装了 mongo 并进行了全面清理。奇怪的是,同样的功能一开始有效,然后只适用于一个特定的数据库,经过几次测试后没有任何效果。

很抱歉,我无法提供更多信息。

大多数 mongo 操作会根据需要自动创建集合,但有些操作不会。错误消息 ns does not exist: test.ts.files 暗示名称空间(数据库+集合)尚不存在并且需要事先创建(大概,这就是为什么它在一台计算机上工作而不是另一台计算机的原因 - 我敢打赌,如果你看过test 工作计算机上的数据库,您会看到 ts.files 集合存在,我相信不同版本的 mongo 会在略有不同的时间自动创建集合)。

grid fs spec 说当驱动程序第一次尝试上传文件时,他们应该首先确保存在适当的索引(这是错误的地方)。手动创建必要的 fs.filesfs.chunks 集合 应该 可以使这段代码正常工作,但我有点惊讶驱动程序没有为你处理这个。