MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

données de printemps - Mongodb - Méthode findBy pour les objets imbriqués

Utilisez simplement le @Query annotation sur cette méthode.

public interface CustomRepository extends MongoRepository<PracticeQuestion, String> {

    @Query(value = "{ 'userId' : ?0, 'questions.questionID' : ?1 }", fields = "{ 'questions.questionID' : 1 }")
    List<PracticeQuestion> findByUserIdAndQuestionsQuestionID(int userId, int questionID);

}

En ajoutant les fields partie de la @Query annotation, vous dites à Mongo de ne renvoyer que cette partie du document. Attention cependant, il renvoie toujours le document entier dans le même format - il manque juste tout ce que vous n'avez pas spécifié. Ainsi, votre code devra toujours renvoyer List<PracticeQuestion> et vous devrez faire :

foreach (PracticeQuestion pq : practiceQuestions) {
    Question q = pq.getQuestions().get(0); // This should be your question.
}