Tengo dos objetos de dominio,primavera - MongoDB - Método findBy de objetos anidados
@Document
public class PracticeQuestion {
private int userId;
private List<Question> questions;
// Getters and setters
}
@Document
public class Question {
private int questionID;
private String type;
// Getters and setters
}
Mi doctor JSON es así,
{
"_id" : ObjectId("506d9c0ce4b005cb478c2e97"),
"userId" : 1,
"questions" : [
{
"questionID" : 1,
"type" : "optional"
},
{
"questionID" : 3,
"type" : "mandatory"
}
]
}
tengo que actualizar el "tipo", basada en ID de usuario y IdPregunta, por lo que he escrito un método de consulta findBy dentro de la interfaz de repositorio personalizado,
public interface CustomRepository extends MongoRepository<PracticeQuestion, String> {
List<PracticeQuestion> findByUserIdAndQuestionsQuestionID(int userId,int questionID);
}
Mi problema es cuando ejecuto este método con userId como 1 y questionID como 3, devuelve la lista de preguntas completa independientemente del questionID. Es el nombre del método de consulta válido o cómo debo escribir la consulta para los objetos anidados.
Gracias por cualquier sugerencia.
Gracias por su respuesta, pero de nuevo esta consulta devuelve una matriz en lugar del elemento apropiado en la matriz. – user1720083
Oh. Veo a que te refieres. Solo puede devolver el documento completo. La consulta realmente busca documentos que tengan ese questionID. Pero siempre obtienes todo el documento devuelto, nunca solo la pregunta. No es una cosa de Java, es una cosa de MongoDB.Mire esta pregunta/respuesta para aclarar: http://stackoverflow.com/a/3985982/229178 – sbzoom
Después de algunas tareas, me di cuenta de que puede especificar objetos parciales en la parte 'campos' de su consulta (' proyecciones'). http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields Actualizaré mi respuesta anterior para dar un ejemplo. – sbzoom