构建过滤器
c#实现
需求:支持对单个字段进行正则模糊匹配,匹配的值是数组形式
实现代码如下:
使用filter构建器的Regex方法构建正则过滤
使用filter构建器的Or方法满足多值需求
public FilterDefinition<BsonDocument> GetRegexFilters(string field, params string[] values)
{
FilterDefinition<BsonDocument> filter = null;
if (values.Length > 0)
{
var filters = new List<FilterDefinition<BsonDocument>>();
foreach (var tag in values)
{
var filterRegex = Builders<BsonDocument>.Filter.Regex(f => f[field], new BsonRegularExpression(new Regex(tag)));
filters.Add(filterRegex);
}
filter = Builders<BsonDocument>.Filter.Or(filters);
}
return filter;
}
针对单个字段的多值查询,且支持每个值的通配查询