Spring Boot MongoDB 默认存储库/模板实现和字段投影

问题描述 投票:0回答:0

我刚刚开始使用 Spring Data MongoDB,从文档来看它看起来非常好。我对默认查询实现有疑问,所以我会知道是否需要编写自己的实现。

假设我有很多

Person
文档,其中包含大量信息——不仅是人的“姓名”,而且可能还有数兆字节的信息,例如购买历史记录、旅行日期、数学作业等等。 (具体信息无关紧要,就说是很多额外的字段。)但有时我只想查询
Person.name
.

的列表

看来Spring Data MongoDB允许我在查询时选择特定字段,这当然是标准的MongoDB字段投影。但是,如果我只是使用

MongoTemplate
MongoDB 存储库 进行标准查询,Spring Data MongoDB 会自动对 MongoDB 进行字段投影以仅查询构造对象所需的字段吗?还是做一个通用的查询,返回数据后才判断哪些字段有用?

例如,假设我有一个这样的 DTO Java 记录:

record PersonListItem(String name) {}

如果我有一个

PersonListItemRepository extends CrudRepository<PersonListItem, String>
并调用
findAll()
,Spring Data MongoDB会默认查询文档和所有它们的字段,还是会主动看到它只需要
name
并在查询中包含该字段投影, 这样 MongoDB 只会发回构造
PersonListItem
所需的信息?如果我使用
MongoTemplate
呢?他们中的任何一个都主动投射领域吗?或者,如果我想基于文档字段的子集进行高效查询和数据传输,是否需要手动编写此类查询?

mongodb spring-boot spring-data-mongodb
© www.soinside.com 2019 - 2024. All rights reserved.