MongoTemplate return SpringBoot 项目中的 userId 为空

MongoTemplate return userId null within SpringBoot project

我使用 spring boot 和 mongoDB,我尝试使用 MongoTemplate 发出一个复杂的请求,以获取所有没有空项目的投资组合,但对于所有结果,我收到 userId null 但我没有不明白我哪里错了。我是 springboot 的新手,任何帮助将不胜感激。

当我执行一个简单的请求时,比如 List portfolios = portfolioRepository.findAll(); userId 不为空

这是我的代码:

PortfolioRepositoryImpl(使用 MongoTemplate)

public List<Portfolio> getPortfolioWithNoEmptyProjects() {
    Query query = new Query();
    query.addCriteria(Criteria.where("projects").exists(true).ne(new ArrayList<>()));
    query.fields().elemMatch("projects", Criteria.where("online").is(true));
    // query.with(new Sort(Sort.Direction.ASC, "created"));
    return mongoTemplate.find(query, Portfolio.class);
  }

投资组合文档

@Document
public class Portfolio {

    @Id
    @Getter
    private String id;

    @Getter
    @Setter
    @NotBlank(message = "media.user.id.not.be.null.or.empty")
    private String userId;

    @Getter
    @Setter
    @NotNull(message = "portfolio.projects.not.be.null")
    private ArrayList<Project> projects;

    public Portfolio() {
        this.projects = new ArrayList<>();
    }

}

文档结构

结果

我发现我的问题只需要包含以下预期字段

Query query = new Query();
query.fields().include("user");
query.addCriteria(Criteria.where("projects").exists(true).ne(new ArrayList<>()));
query.fields().elemMatch("projects", Criteria.where("online").is(true));
return mongoTemplate.find(query, Portfolio.class);