我们可以使用 MongoDB 的聚合管道(Aggregation Pipeline)来实现动态条件过滤。具体步骤如下:
-
构建一个空的管道:
pipeline = []
-
使用 $match 管道操作符添加条件过滤的阶段(stage),可以根据需要添加多个条件:
condition1 = {"field1": {"$gt": 100}}
stage1 = {"$match": condition1}
pipeline.append(stage1)
condition2 = {"field2": {"$in": ["value1", "value2"]}}
stage2 = {"$match": condition2}
pipeline.append(stage2)
-
使用 $project 管道操作符添加投影阶段,只输出需要的字段:
fields = {"field1": 1, "field2": 1}
stage3 = {"$project": fields}
pipeline.append(stage3)
-
运行聚合查询,将数据传递到管道中依次经过各个阶段,并返回结果:
result = db.collection.aggregate(pipeline)
其中,db.collection 是要进行查询的集合名称。完整的代码示例如下:
pipeline = []
添加动态条件过滤阶段
condition1 = {"field1": {"$gt": 100}}
stage1 = {"$match": condition1}
pipeline.append(stage1)
condition2 = {"field2": {"$in": ["value1", "value2"]}}
stage2 = {"$match": condition2}
pipeline.append(stage2)
添加投影阶段
fields = {"field1": 1, "field2": 1}
stage3 = {"$project": fields}
pipeline.append(stage3)
执行聚合查询,并返回结果
result = db.collection.aggregate(pipeline)