c# - C# 中的多个 MongoDb 过滤器
问题描述
为了在 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 过滤器,它尝试查找具有空键和空值的文档(示例),
最好改为使用Builders<BsonDocument>.Filter.Empty
。
此外,您正在运行.First()
after.Find()
方法,因此您假设始终至少有一个值。如果您想在出现问题时被抛出,那很好,Sequence contains no elements
但是您可以尝试通过使用更优雅地处理它.FirstOrDefault()
推荐阅读
- php - 在 PHP 中将 CSV 转换为对象数组
- amazon-web-services - 并非所有打开 aws 页面的网址
- python - 使用转换器参数传递“字符串”时,Pandas read_excel 新字符串类型错误
- python - Gspread:一次格式化特定单元格(不仅仅是一行或一列)
- javascript - 打字稿:字符串和字符串模板关系 - 转换?
- r - R调查后分层:与调查功能作斗争
- angular - 如何使用 FormArray 将数据加载到表单中,将其显示在表格中,然后一次性发送加载的数据?
- python - PyQt6 的 Qt 模块替代品
- python - 填充点之间的颜色渐变
- sql - 验证动态 SQL DELETE 语句而不执行该语句