MongoTemplate получить только встроенный документ - PullRequest
0 голосов
/ 19 июня 2020

У меня 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 это выглядит так:

enter image description here

И я хочу получить ТОЛЬКО с помощью 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 пустые.

...