Build dynamic queries with Spring Data MongoDB Criteria
mongodb, spring, spring-data, spring-data-mongodb
Solution
Doesn't this work for you?
Criteria criteria = Criteria.where("contentType").is("application/vnd.sometype");
List<Criteria> docCriterias = new ArrayList<Criteria>(docs.size());
for (Document doc: docs) {
docCriterias.add(Criteria.where("metadata.name").is(doc.getName())
.and("metadata.version").is(doc.getVersion()));
}
criteria = criteria.orOperator(docCriterias.toArray(new Criteria[docs.size()]));
?
Problem
I would like to run a bulk delete operation on a list of documents in MongoDB that have been selected by the user in the UI so I need to dynamically build a query that looks like the following (the or clause expands for every document selected): ``` { $and: [ { "contentType": "application/vnd.sometype" }, { $or: [ { "metadata.name": "someName", "metadata.version": "someVersion" }, { "metadata.name": "someOtherName", "metadata.version": "someOtherVersion" } ] } ] }, Fields: null, Sort: null ``` Just now I'm using string concatenation to achieve this. Is it possible to build this query with the Spring Data MongoDB Criteria Builder (org.springframework.data.mongodb.core.query.Criteria)?