Ich habe die folgenden POJO.Repository-Abfrage mit einem List-Parameter in Spring Data MongoDB
@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;
}
}
Ich versuche, eine MongoRepository
Abfrage zu implementieren, die alle Question
s findet, die eine Liste von Tags enthalten. Ich habe folgendes versucht:
@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
List<Question> findByTags(List<String> tags);
}
aber dies ist nur funktioniert, wenn die List
von Tags, die ich auf das Verfahren vollständig die Liste der Tags auf die Frage in Mongo zugewiesen passt vorbei bin. Z.B. Wenn ich eine Frage in Mongo mit einer Liste von Tags [ "t1", "t2", "t3" ]
habe, wird es nicht von findByTags(List)
zurückgegeben, wenn ich [ "t1", "t2" ]
an die Methode übergebe.
Ich habe versucht, die folgenden auch:
@Repository
public interface QuestionRepository extends MongoRepository<Question, String> {
@Query("{ tags: { $all: ?0 } }")
List<Question> findByTags(List<String> tags);
}
aber dann konnte mein war
gar nicht zu meinem Servlet-Container eingesetzt werden. (Ich erhalte die folgenden Fehler in diesem Fall:
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.
Würden Sie bitte auf, wie die benutzerdefinierte Abfrage implementieren
nice finding. Soll das Schlüsselwort am Ende des Methodennamens stehen? danke – Harshana
Was, wenn wir Fragen finden wollen, die mindestens 1 Umbau haben? ohne Wissen Tag? –
hab es !! @Query ("{tags: {$ exists: true}, $ wo: 'this.tags.length> 0'}") –