Здесь я использую MongoRepository, и мне нужно запросить список объектов DBRef, который включает в себя определенный идентификатор в массиве объектов внутри.
Структура документа:
{
"_id" : ObjectId("5ccfe299902bb32f5a194ed7"),
"email" : "JohnDoe@gmail.com",
"name" : "JohnDoe",
DBRef("webinarSignups", ObjectId("5ccfe298902bb32f5a194ed6"))
],
"_class" : "io.sample.persistencelayer.domain.User",
"bookletSignups" : [
DBRef("bookletSignups", ObjectId("5ccfe2a9902bb32f5a194ed8"))
],
"eventSignups" : [
DBRef("eventSignups", ObjectId("5ccfe2b6902bb32f5a194ed9"))
],
"infoSignups" : [
DBRef("infoSignups", ObjectId("5ccfe2c2902bb32f5a194eda"))
]
}
Репозиторий:
@RepositoryRestResource(collectionResourceRel = "users",path = "users")
public interface UserRepository extends MongoRepository<User,String> {
@org.springframework.data.mongodb.repository.Query(value = "{ 'webinarSignups': { $elemMatch: { 'webinarId' : ?0 } }}")
List<User> findByWebinarId(String id);
}
Класс модели User:
@Data
@Document(collection = "user")
public class User implements Serializable {
@Id
private String id;
private String email;
private String name;
@Field("bookletSignups")
@DBRef
private List<BookletSignUp> bookletSignups;
@Field("eventSignups")
@DBRef
private List<EventSignUp> eventSignups;
@Field("infoSignups")
@DBRef
private List<InfoSignUp> infoSignups;
@Field("webinarSignups")
@DBRef
private List<WebinarSignUp> webinarSignups;
}