MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

spring data - Mongodb - metodo findBy per oggetti nidificati

Basta usare @Query annotazione su quel metodo.

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);

}

Aggiungendo i fields parte di @Query annotazione, stai dicendo a Mongo di restituire solo quella parte del documento. Attenzione però, restituisce comunque l'intero documento nello stesso formato, manca solo tutto ciò che non hai specificato. Quindi il tuo codice dovrà comunque restituire List<PracticeQuestion> e dovrai fare:

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