GridFS выбрасывает Команду listIndexes не удалось исключение при загрузке файла - PullRequest
0 голосов
/ 06 февраля 2019

Я не могу заставить 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: Команда listIndexes завершилась неудачно: ns неСуществовать: test.ts.files "

Тот же код работает на другом компьютере, не работает на моем компьютере.Я даже переустанавливал монго с полной очисткой.Как ни странно, сначала работала одна и та же функция, затем только для одной конкретной базы данных, и после нескольких тестов ничего не работает.

Извините, что не могу предоставить больше информации.

1 Ответ

0 голосов
/ 30 июня 2019

Большинство операций монго автоматически создает коллекции по мере необходимости, но некоторые операции этого не делают.Сообщение об ошибке ns does not exist: test.ts.files подразумевает, что пространство имен (база данных + коллекция) еще не существует и должно быть создано заранее (предположительно, поэтому оно работает на одном компьютере, а не на другом - держу пари, если вы посмотрели на test база данных на рабочем компьютере, вы увидите, что коллекция ts.files существует, и я считаю, что разные версии mongo автоматически создают коллекции в несколько разное время.

сетка fs spec говорит, что когда драйверы впервые пытаются загрузить файл, они должны сначала убедиться, что существуют соответствующие индексы (это точка, в которой происходит ошибка).Создание необходимых коллекций fs.files и fs.chunks вручную должно заставить этот код работать, но я немного удивлен, что драйвер не справился с этим за вас.

...