Spring Boot MongoDB получает только определенные поля из базы данных в модель - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь понять, как работать с MongoDB и Spring Boot.У меня есть mongodb с образцами данных, и я хочу, чтобы он возвращал только выбранные поля, а не все данные.

Моя коллекция mongoDB содержит данные в формате

enter image description here

DAO.java

package com.books.Reading.DAO;
import com.books.Reading.model.booksModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

public interface readingListDAO extends MongoRepository<booksModel, String> {

    @Query("{'title' : 'Griffon in Action'}")
    public booksModel findFirstByOrderByTitleAsc();
}

model.java

package com.books.Reading.model;

import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class booksModel {
    String title;
    String isbn;
    int pageCount;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }
}

controller.java

package com.books.Reading.controller;

import com.books.Reading.model.booksModel;
import com.books.Reading.service.readingListService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class readingListController {

    @Autowired
    private readingListService rlService;

    @RequestMapping("/")
    @ResponseBody
    public booksModel getOne(){
        return rlService.getOne();
    }

}

service.java

package com.books.Reading.service;

import com.books.Reading.model.booksModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class readingListService {

    @Autowired
    private com.books.Reading.DAO.readingListDAO readingListDAO;

    public booksModel getOne(){
        System.out.println(readingListDAO.findFirstByOrderByTitleAsc());
        return readingListDAO.findFirstByOrderByTitleAsc();
    }
}

application.properties

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=book
spring.session.mongodb.collection-name=readinglist

MongoDB являетсяХостинг локальноКак я могу получить только выбранные поля (title, isbn и pageCount) из базы данных.

Я новичок в Spring Boot, поэтому, если есть другие ошибки или лучшие практики, я буду рад вашим отзывам.

1 Ответ

0 голосов
/ 21 сентября 2019

По умолчанию все свойства документа будут выбраны.если вы хотите игнорировать некоторые свойства в результате, вы можете использовать опцию фильтра.

        @Query(value = "{'title' : ?0}", fields = "{'description' : 0}")
        BooksModel findBooksModelByTitle(String title);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...