为了在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'
发布于 2020-03-17 21:15:05
Builders<BsonDocument>.Filter.Eq("", "")
是一个有效的MongoDB过滤器,它尝试查找具有空键和空值(example)的文档,
最好改用Builders<BsonDocument>.Filter.Empty
。
另外,您在.Find()
方法之后运行.First()
,所以您假设总是至少有一个值。如果您希望在出现问题时抛出Sequence contains no elements
,这很好,但是您可以尝试通过使用.FirstOrDefault()
来更优雅地处理
https://stackoverflow.com/questions/60721582
复制相似问题