C# 中的多个 MongoDb 过滤器

Multiple MongoDb filters in C#

为了在 C# 中处理多个 MongoDb 过滤器,我编写了以下方法;

        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'

Builders<BsonDocument>.Filter.Eq("", "") 是一个有效的 MongoDB 过滤器,它会尝试查找具有空键和空值 (example)、

的文档

最好用Builders<BsonDocument>.Filter.Empty代替。

此外,您在 .Find() 方法之后 运行 .First(),因此您假设始终至少有一个值。如果您希望在出现问题时抛出 Sequence contains no elements ,那很好,但是您可以尝试使用 .FirstOrDefault()

来更优雅地处理它