Я пытаюсь написать Mon go Query, который должен принимать список объектов в запросе, а Document должен содержать этот список объектов.
Например, следующим является запрос поиска:
class SearchRquest{
private String jeeves;
private List<Wooster> woosters;
}
class Wooster{
private String age;
private String hobby;
}
Здесь, если документ содержит все элементы списка Wooster поискового запроса, его следует вернуть. Я пытаюсь написать запрос следующим образом:
public List<Wodehouse> findBySearchRequest(SearchRequest request) {
Query query = new Query();
if(null != request.getJeeves()) {
query.addCriteria(Criteria.where("jeeves").is(request.getJeeves()));
}
if(null != request.getWoosters()){
for(Wooster wooster: request.getWoosters()){
query.addCriteria(Criteria.where("woosters").elemMatch(Criteria.where("age")
.is(wooster.getAge()).and("hobby").is(wooster.getHobby())));
}
}
log.info("query = "+query);
return mongoTemplate.find(query, Wodehouse.class, COLLECTION_NAME).size();
}
, но он дает следующее исключение:
org.springframework.data.mongodb.InvalidMongoDbApiUsageException:
Due to limitations of the com.mongodb.BasicDocument, you can't add a second 'woosters' criteria. Query already contains.
Я попытался найти пример выше, но не смог его найти.