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()
来更优雅地处理它
为了在 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()