Ich habe zwei Domain-Objekte,Federdaten - MongoDB - findBy Methode für verschachtelte Objekte
@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
}
Mein JSON doc ist wie diese,
{
"_id" : ObjectId("506d9c0ce4b005cb478c2e97"),
"userId" : 1,
"questions" : [
{
"questionID" : 1,
"type" : "optional"
},
{
"questionID" : 3,
"type" : "mandatory"
}
]
}
Ich habe den "Typ" auf der Grundlage aktualisieren auf userId und QuestionID, so habe ich eine findBy Abfragemethode innerhalb der benutzerdefinierten Repository-Schnittstelle geschrieben,
public interface CustomRepository extends MongoRepository<PracticeQuestion, String> {
List<PracticeQuestion> findByUserIdAndQuestionsQuestionID(int userId,int questionID);
}
Mein Problem ist, Wenn ich diese Methode mit userId als 1 und questionID als 3 ausfühle, wird die gesamte Fragenliste unabhängig von der FrageID zurückgegeben. Ist der Name der Abfragemethode gültig oder wie schreibe ich die Abfrage für verschachtelte Objekte?
Danke für jeden Vorschlag.
Dank für Sie antworten, aber auch hier diese Abfrage gibt eine Array und nicht das entsprechende Element im Array. – user1720083
Oh. Ich verstehe was du meinst. Sie können immer nur das gesamte Dokument zurückgeben. Die Abfrage sucht tatsächlich nach Dokumenten mit dieser Frage-ID. Aber Sie bekommen immer das gesamte Dokument zurück - nie nur die Frage. Es ist keine Java-Sache, es ist eine MongoDB-Sache.Schauen Sie sich diese Frage/Antwort zur Klärung an: http://StackOverflow.com/a/3985982/229178 – sbzoom
Nach einigen Hausaufgaben wurde mir klar, dass Sie Teilobjekte im 'fields' Teil Ihrer Anfrage (' Projektionen') angeben können. http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields Ich werde meine obige Antwort aktualisieren, um ein Beispiel zu geben. – sbzoom