我有以下收藏:
@Data
@Document(collection = "compte_titre_composition")
public class CompteTitreComposition {
@Id private String id;
@Field("numero_compte_titre")
private String numeroCompte;
private BigDecimal valorisationActuelle;
@Field("date_valorisation")
private Date dateValorisation;
@Field("date_validite")
private Date dateValidite;
}
我想选择元素作为datevalorisation,numerocompte等于方法params和datevalorisation>=datevalidite,所以我编写了以下代码:
public List<EvolutionCompteTitreDto> getCpteTitreEvolution(
String numeroCompte, LocalDateTime dateDebut, LocalDateTime dateFin) {
List<AggregationOperation> listAggregations = new ArrayList<>();
AggregationOperation matchByCpteAndDateValorisation =
Aggregation.match(
Criteria.where("numeroCompte")
.is(numeroCompte)
.and("dateValorisation")
.gte("dateValidite")
.gte(dateDebut)
.lte(dateFin));
除了这个条件datevalorisation>=datevalidite(似乎没有考虑它)代码没有考虑它之外,所有条件都可以正常工作
1条答案
按热度按时间gudnpqoy1#
问题来自错误的比较方法gte()将对象作为参数进行比较。在比较同一文档中的两个字段时,我们应该创建如下表达式:
最后,这个解决方案对我有效