【问题标题】:GridFS throws Command listIndexes failed exception when uploading fileGridFS 上传文件时抛出 Command listIndexes failed 异常
【发布时间】:2019-06-30 18:44:37
【问题描述】:

我无法让 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。奇怪的是,相同的功能一开始就有效,然后只适用于一个特定的数据库,经过几次测试后就没有任何效果。

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

【问题讨论】:

  • 您找到解决此问题的方法了吗?
  • 不,很遗憾

标签: mongodb mongodb-.net-driver


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 2015-05-21
    • 2023-03-03
    • 1970-01-01
    • 2013-05-24
    • 2021-12-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多