Ho due oggetti di dominio,primavera - MongoDB - Metodo findBy per gli oggetti nidificati
@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
}
mio JSON doc è come questo,
{
"_id" : ObjectId("506d9c0ce4b005cb478c2e97"),
"userId" : 1,
"questions" : [
{
"questionID" : 1,
"type" : "optional"
},
{
"questionID" : 3,
"type" : "mandatory"
}
]
}
devo aggiornare il "tipo" sulla base di userid e QuestionID, così ho scritto un metodo di query findBy all'interno dell'interfaccia repository personalizzati,
public interface CustomRepository extends MongoRepository<PracticeQuestion, String> {
List<PracticeQuestion> findByUserIdAndQuestionsQuestionID(int userId,int questionID);
}
il mio problema è quando eseguo questo metodo con userId come 1 e questionID come 3, restituisce l'intero elenco di domande indipendentemente dal questionid. Il nome del metodo di query è valido o come dovrei scrivere la query per gli oggetti nidificati.
Grazie per qualsiasi suggerimento.
Grazie per si risponde, ma ancora una volta questa query restituisce un array piuttosto che l'elemento appropriato nell'array. – user1720083
Oh. Capisco cosa intendi. Puoi sempre restituire l'intero documento. La query cerca effettivamente i documenti che hanno quel questionid. Ma ottieni sempre l'intero documento restituito - mai solo la domanda. Non è una cosa java, è una cosa di MongoDB.Guarda questa domanda/risposta per chiarimenti: http://stackoverflow.com/a/3985982/229178 – sbzoom
Dopo alcuni compiti mi sono reso conto che puoi specificare oggetti parziali nella parte 'fields' della tua query (' proiezioni '). http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields aggiornerò la mia risposta sopra per dare un esempio. – sbzoom