У меня есть следующее POJO.
@Document(collection = "questions")
public class Question {
@Id
private String id;
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
}
Я пытаюсь реализовать запрос MongoRepository
, который находит все Question
, содержащие список тегов. Я пробовал следующее:
@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
List<Question> findByTags(List<String> tags);
}
но это работает только тогда, когда теги List
, которые я передаю методу, полностью соответствуют списку тегов, заданных для вопроса в Mongo. Например. если у меня есть вопрос в Mongo со списком тегов [ "t1", "t2", "t3" ]
, он не возвращается findByTags(List)
, когда я передаю [ "t1", "t2" ]
методу.
Я также пробовал следующее:
@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
@Query("{ tags: { $all: ?0 } }")
List<Question> findByTags(List<String> tags);
}
но тогда мой war
не мог быть полностью развернут в моем контейнере сервлета. (В этом случае я получаю следующую ошибку:
The web application [backend] appears to have started a thread named [cluster-1-db:27017] but has failed to stop it. This is very likely to create a memory leak.
Не могли бы вы посоветовать, как реализовать этот пользовательский запрос?