sql >> Base de Datos >  >> NoSQL >> MongoDB

datos de primavera - Mongodb - método findBy para objetos anidados

Solo usa @Query anotación en ese método.

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

}

Agregando los fields parte de @Query anotación, le está diciendo a Mongo que solo devuelva esa parte del documento. Sin embargo, tenga cuidado, todavía devuelve el documento completo en el mismo formato, solo falta todo lo que no especificó. Por lo tanto, su código aún tendrá que devolver List<PracticeQuestion> y tendrás que hacer:

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