MongoTemplate как включить определенные поля DBref
Привет у меня есть структура, называемая проблемой, которая внутренне имеет главу, глава имеет DBref для BookEdition и BookEdition имеет DBRef для книги
Problem {
String name,
@DBRef
Chapter chapter;
}
Chapter {
String name,
@DBRef
BookEdition edition;
}
BookEdition {
String name,
Book book;
}
если я просто получаю проблему, что для ее извлечения требуется много времени, поэтому я просто хочу включить нужную мне информацию с помощью fields().include(), но я не могу найти поля DBRefed, такие как глава, книга или книга
Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
.and("chapter.$id").ne(""));
q.fields().include("id")
.include("name")
.include("html");
Работает нормально, но если я просто хочу идентификатор главы
Query q = new Query().addCriteria(Criteria.where("html").ne("").ne(null)
and("chapter.$id").ne(""));
q.fields().include("id")
.include("name")
.include("html")
.include("chapter._id")
.include("chapter.bookEdition.isbn13")
.include("chapter.$bookEdition.$editionNumber")
.include("chapter.$bookEdition.$book.subjectId")
.include("chapter.$bookEdition.$book.title");
Он не получает идентификатор главы, bookedition. Я надеюсь, что смогу объяснить свой вопрос. Есть ли способы указать конкретное поле DBRef для включения?
1 ответ
Вы не можете определить спецификации полей для DBRef, так как они могут быть получены только для всех полей одновременно. Обычно рекомендуется не использовать DBRefs (не нами, а на самом деле разработчиками MongoDB, см. Справочную документацию), но позаботиться о связанных объектах в коде вашего приложения. Это означает, что вы предпочитаете сохранить идентификатор, а затем выполнить специальный запрос для разрешения связанных объектов. Это позволяет вам снова использовать спецификации полей при загрузке связанных объектов.