Фильтрация в хранилище mongo для массива объектов DBRef возвращает пустой - PullRequest
0 голосов
/ 09 мая 2019

Здесь я использую 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;
}
...