Java – how do I check that the value is equal to at least one field in the list?
•
Java
I have this method:
for (String fieldName : fieldArray) {
Query query = new Query();
query.addCriteria(Criteria.where("data." + fieldName).is("some_constant"));
if (mongoTemplate.find(query,DataPoint.class).size() > 0) {
return true;
}
}
return false;
This code looks inefficient because it accesses DB so many fieldarray sizes
Is there any way to replace it with a single query?
Solution
In my opinion, you can use public criteria or operator (criteria... Criteria)
It should be like this:
List<Criteria> criterias = new ArrayList<>();
for (String fieldName : fieldArray) {
//Create the criterias like you want
criterias.add(Criteria.where("data." + fieldName).is("some_constant"));
}
Query query = new Query(
new Criteria().orOperator(
criterias.toArray( //convert the list into an Criteria[] for the varargs parameter
new Criteria[criterias.size()]
)
)
);
This will create a criteria list for generating criteria instances. If a condition is valid (or operation, a true is enough), the instance will be valid
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
