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

我应该如何使用spring mongo存储库从mongo db获取数据?,spring,mongodb,spring-mongodb,mongorepository,Spring,Mongodb,Spring Mongodb,Mongorepository,我在spring boot应用程序中使用mongodb,我使用mongo repository接口从数据库获取数据,这就是我获取数据的方式 School sch=repository.findOne("id"); 这将给我学校对象,然后我可以从那里获得所有数据,但我的问题是,如果每次我需要从该对象获得整个对象,即使我需要一些字段,它是否会影响我的应用程序的性能。如果是这样的话,我搜索的方法是什么?我发现使用查询注释可以限制字段,但即使这样,它也会给整个对象设置为空,其他字段都为空,

我在spring boot应用程序中使用mongodb,我使用mongo repository接口从数据库获取数据,这就是我获取数据的方式

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

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

可以使用投影界面检索属性子集。


因此,在阅读了文档和其他选项之后,这是我找到的唯一解决方案,我可以使用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是主键,所以它只有一个学校对象列表,所以我可以执行get0来获取我的学校对象,并且它将具有所有属性其他字段为空。这是我能找到的最好的字段。请分享您的想法以改进它。我希望听到其他解决方案。

性能涉及太多变量,因此它将取决于您的良好性能,但是,如果你需要减少应用程序读取数据库的次数,那么你可以使用缓存。我的要求是这样的,在某些页面中,我只需要一个字段。在某些情况下,我需要多个字段。如果我认为当我需要多个字段时,我应该得到完整的对象,而当我需要单个字段时,我应该得到单个字段。但我想知道这样做是否有好处,或者数据库性能是否对我对它执行的任何查询起作用,而不是对它返回的响应大小起作用,我如何使用id进行查询并在多种情况下获取单个字段我只能使用findOneById一次。
      @Query(value="{_id:?0}",fields="{?1:1,?2:1}")
List<School> findById(String schoolId, String fieldOne,String fieldTwo);