0

我在我的 Spring Boot 应用程序中使用 mongodb,我正在使用 mongo 存储库接口从数据库中获取数据,这就是我获取数据的方式。

      School sch=repository.findOne("id");

这将给我学校对象,然后我可以从那里获取所有数据,但我的问题是,如果我每次需要来自该对象的一些数据时都获取整个对象,即使我需要一些字段,它是否会影响我的应用程序的性能。如果是这样,我搜索的方法是什么,我看到使用查询注释我可以限制字段,但即使这样它也会给整个对象它把所有其他字段都设置为空,并且数据只在我指定的字段中。任何指导都会有所帮助。

4

2 回答 2

1

您可以使用投影接口来检索属性的子集。 Spring Data Mongo DB

interface NamesOnly {
  String getName();
}

interface SchoolRepository extends Repository<School, UUID> {
  NamesOnly findOneById(String id);
}
于 2017-09-18T09:34:55.003 回答
0

因此,在阅读文档并阅读其他选项之后,这是我找到的唯一解决方案,我可以在其中使用 id 搜索结果并在结果中获取我想要的唯一字段,因为我只使用 id 进行搜索,所以我必须重载 findbyId 并且因为投影界面只更改返回类型,我不能使用它,所以这就是我所做的。

      @Query(value="{_id:?0}",fields="{?1:1,?2:1}")
List<School> findById(String schoolId, String fieldOne,String fieldTwo);

这里 ?0 是 schoolId 的占位符, ?1 和 ?2 是字段名称的占位符,所以现在我可以创建这些重载方法,我可以将其用于任何字段输出是学校列表,因为我使用的是 id这是主键,所以它只是一个学校对象列表,所以我可以做 get(0) 来获取我的学校对象,它将所有其他字段都设为 null 这是我能找到的最好的,请分享你的想法以改进它很想听听其他解决方案。

于 2017-09-20T11:37:00.917 回答