I want to perform aggregation using multiple criteria. The problem is that I don’t know how to pass multiple criteria. Do I declare multiple Match operation like below?
MatchOperation matchOperation1 = Aggregation.match(criteria); MatchOperation matchOperation2 = Aggregation.match(criteria2);
And if yes, then how do I pass them to the aggregation method? I thought that it should be possible to create a MatchOperation that adheres in multiple criteria but I have not found such an example online.
Advertisement
Answer
Do I declare multiple Match operation like below?
MatchOperation matchOperation1 = Aggregation.match(criteria); MatchOperation matchOperation2 = Aggregation.match(criteria2);
The Criteria
class has an and
method, which allows combining two conditions. For example, consider the three documents:
{ _id: 1, size: 10, color: "blue" } { _id: 2, size: 12, color: "red" } { _id: 3, size: 8, color: "blue" }
The aggregation match
stage is defined as follows:
Aggregation.match(Criteria.where("size").gt(new Integer(8)) .and("color").is("blue") )
This returns the document with _id: 1
.