У меня 2 класса. Пользователь и книга. Пользователь хранит книги в комплекте.
@Getter
@Builder
@Document("user")
class UserDocument {
@Id
private String id;
private final Set<BookDocument> books;
// other fields
@Builder
@Getter
class BookDocument {
@Id
@Setter
private String id;
private final String title;
В MongoDB это выглядит так:
И я хочу получить ТОЛЬКО с помощью MongoTemplate bookDocument.
public Optional<BookDocument> findBookById(String id) {
Query bookQuery = new Query(
where("books")
.elemMatch(where("_id").is(new ObjectId(id)))
);
bookQuery.fields().include("books.$").exclude("_id");
return Optional.ofNullable(mongoTemplate.findOne(bookQuery, BookDocument.class, "user"))
Я пробую это, но не работает. Все поля в BookDocument пустые.