Несколько фильтров MongoDb в C# - PullRequest
1 голос
/ 17 марта 2020

Для обработки нескольких фильтров MongoDb в C#, я написал метод ниже:

        public string MultipleFilters(string collectionName, Dictionary<string, string> dictFilters)
        { 
            var filter = Builders<BsonDocument>.Filter.Eq("", "");

            foreach (KeyValuePair<string, string> entry in dictFilters)
            {
                filter = filter & Builders<BsonDocument>.Filter.Eq(entry.Key, entry.Value);
            }

            var collection = this.database.GetCollection<BsonDocument>(collectionName);           
            var document = collection.Find(filter).First();

            return document.ToJson();
        }

Но выдает ошибку:

System.InvalidOperationException: 'Sequence contains no elements'

1 Ответ

1 голос
/ 17 марта 2020

Builders<BsonDocument>.Filter.Eq("", "") - это действительный фильтр MongoDB, который пытается найти документ с пустым ключом и пустым значением ( пример ),

, вместо него лучше использовать Builders<BsonDocument>.Filter.Empty.

Также вы запускаете .First() после метода .Find(), поэтому вы предполагаете, что всегда есть хотя бы одно значение. Это хорошо, если вы хотите, чтобы Sequence contains no elements бросали, когда что-то пошло не так, однако вы можете попытаться обработать это более изящно, используя .FirstOrDefault()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...