2017-10-13 1 views
0

J'ai deux entités, cours et sujet comme suit,MongoDB trouver dans la requête

@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; 
................... 
} 

ici « Cours » contient la liste des Ids de sujet. Donc, j'ai un sujet Id dire ("59ce80a4a2e7f329eccac601"), j'ai besoin de trouver tous les cours où ce sujet sera présent dans la liste des sujets de cours.

Y at-il un moyen que je peux écrire cela dans la requête.

J'utilise mongorepository du printemps

+0

Vous pouvez 'Liste findBySubjectIds (String subjectId); ' – Veeram

Répondre

0

MongoDB requête native:

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

A correspondant ressort données MongoDB Requête:

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