gpt4 book ai didi

java - Spring MongoDB : Criteria methods non-static access

转载 作者:可可西里 更新时间:2023-11-01 10:23:00 26 4
gpt4 key购买 nike

我正在使用 AggregationCriteria 编写动态 MongoDB 查询,就像这样。

Aggregation aggregation;
AggregationResults<DataContentResult> result;
List<DataContentResult> theResult;
try {
aggregation = Aggregation.newAggregation(
buildMatchCriteriaForAggregation(publisherId, filter)
, buildGroupOperationForAggregation());

result = mongoTemplate.aggregate(aggregation, DataContent.class, DataContentResult.class);
theResult = result.getMappedResults();

} catch (Exception e) {
e.printStackTrace();
}

@SuppressWarnings("static-access")
private AggregationOperation buildMatchCriteriaForAggregation(Integer publisherId, Filter filterCriteria){
Criteria criteria = new Criteria();
criteria.where("publisherId").is(publisherId);

if (filterCriteria.getTa() != null) criteria.where("type").is(filterCriteria.getTa());
if (filterCriteria.getPlz() != null) criteria.where("zip").is(ilterCriteria.getPlz());
if (filterCriteria.getTbVerlag() != null) criteria.where("tbVerlagNr").is(filterCriteria.getTbVerlag());

return Aggregation.match(criteria);
}

现在我知道我应该以静态方式访问 Criteria 方法,例如 Criteria.where("something").is("something")。但就我而言,我需要根据它们的可用性指定我的 Filter 标准。因此我必须像上面那样做。这是行不通的,criteria 对象由于某种原因每次都以空结束。

在这种情况下推荐什么替代方法?还是我做错了什么?

最佳答案

好吧,答案很简单,如下所示:

Criteria criteria = new Criteria();

criteria = criteria.where("publisherId").is(publisherId);
if(<condition>) criteria = criteria.orOperator(
Criteria.where("something").is("something"));

关于java - Spring MongoDB : Criteria methods non-static access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36866493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com