考虑下面的过滤器:

var builder = Builders<Product>.Filter;

var filter = builder.Gte(i => i.Price, criteria.MinPrice) &
                            builder.Lte(i => i.Price, criteria.MaxPrice);
if (0 != criteria.CategoryId)
//Combine the following filter with the previous filter. How??
                var criteriaFilter = builder.Eq(i => i.CategoryId, criteria.CategoryId);

如何将criteriaFilterfilter结合起来?

推荐答案

if (criteria.CategoryId != 0)
{
    var criteriaFilter = builder.Eq(i => i.CategoryId, criteria.CategoryId);
    filter = filter & criteriaFilter;
}

Mongodb相关问答推荐

使用单个/多个值查询任何/特定,而不使用if块

MongoDB索引使用

如何使用MongoDB对子文档进行条件投影?

如何在MongoDB中使用Aggregation来计算两个键相同但字段不同的对象数组的总值,并将其合并为一个?

MongoDB-如何过滤和获取数组字段中的最新数据

如何使用内部数组中的值更新文档

如何向所有文档添加一个字段,其中前 100 个文档的值为 1,接下来的 100 个文档的值为 2,依此类推?

尽管前一阶段输出文档,$group stage 仍返回零文档

MongoDB:嵌套数组计数+原始文档

MongoDB:如何将所有文档合并到聚合管道中的单个文档中

MongoDB 查询以包含多个字段的最常见值的计数

MongoDB 存储大量指标/分析数据的方法

mongo _id 字段重复键错误

Mocking/stubbing mongoose模型保存方法

如何在 mongoDB 中聚合巨大的数组?

REACT 获取发布请求

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

我在更新中对 $set 和 $inc 做错了什么

如何使用 mgo 从 golang 中的 mongodb 集合中 Select 所有记录

停止副本集 MongoDB