2017-10-13 5 views
0

Ich habe zwei Entitäten, Platz- und unterliegen wie folgtmongoDB in Abfrage finden

@Document(collection = "course") 
public class Course implements Serializable { 
{ 
........... 
    @Field("course_name") 
    private String courseName; 

    @Field("subjectIds") 
    private List<String> subjectIds; 
... 
} 


@Document(collection = "subject") 
public class Subject implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    private String id; 

    @Field("subject_name") 
    private String subjectName; 
................... 
} 

hier „Kurs“ enthält die Liste der Ids Thema. Also, ich habe eine Betreff-ID sagen ("59ce80a4a2e7f329eccac601"), ich muss alle Kurse finden, wo diese Subjekt-ID in der Liste der subjectIds Eigenschaft von Course vorhanden sein wird.

Gibt es eine Möglichkeit, die ich in Abfrage schreiben kann.

Ich bin mit mongorepository des Frühlings

+0

können Sie versuchen, 'Liste findBySubjectIds (String subjectId); ' – Veeram

Antwort

0

MongoDB nativen Abfrage:

db.course.find({subjectIds: { $elemMatch: { $eq: "59ce80a4a2e7f329eccac601"}}}) 

Eine entsprechende Spring Data MongoDB Abfrage:

@Query("{'subjectIds': {\$elemMatch: {\$eq: ?0}}}")