我应该如何使用spring mongo存储库从mongo db获取数据?

时间:2017-09-17 08:06:02

标签: spring mongodb spring-mongodb mongorepository

我在我的春季启动应用程序中使用mongodb,我使用mongo存储库接口从数据库获取数据这是我获取数据的方式。

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

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

2 个答案:

答案 0 :(得分:1)

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

interface NamesOnly {
  String getName();
}

interface SchoolRepository extends Repository<School, UUID> {
  NamesOnly findOneById(String id);
}

答案 1 :(得分: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是主键,所以它只是一个学校对象列表,所以我可以得到(0)得到我的学校对象,它将所有其他字段为null这是我能找到的最好的请分享你的想法改善它我很想听到其他解决方案。