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);
我使用 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);