【问题标题】:Spring Boot MongoDB get only certain fields from database into modelSpring Boot MongoDB 仅将数据库中的某些字段获取到模型中
【发布时间】:2020-01-21 23:51:56
【问题描述】:

我正在尝试了解如何使用 MongoDB 和 Spring Boot。我有一个带有示例数据的 mongodb,我希望它只返回选定的字段而不是整个数据。

我的 mongoDB 集合包含以下格式的数据

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 在本地托管。如何从数据库中仅检索选定的字段(标题、isbn 和 pageCount)。

我是 Spring Boot 的新手,所以如果有其他错误或最佳实践,我欢迎您的反馈。

【问题讨论】:

    标签: spring mongodb spring-boot spring-mvc


    【解决方案1】:

    默认情况下,将获取文档的所有属性。如果您想忽略结果中的某些属性,可以使用过滤器选项。

            @Query(value = "{'title' : ?0}", fields = "{'description' : 0}")
            BooksModel findBooksModelByTitle(String title);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2023-04-09
      • 2021-07-31
      • 2019-07-12
      • 1970-01-01
      相关资源
      最近更新 更多