You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spring Data MongoDB Criteria实现含$toDouble的查询?

实现方式

要实现你需要的MongoDB查询逻辑,核心是借助Spring Data MongoDB的Criteria.expr()结合聚合表达式来构建$expr条件,具体代码如下:

import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.aggregation.AggregationExpressions;

// 构建查询条件
Criteria criteria = Criteria.expr(
    AggregationExpressions.lte(
        AggregationExpressions.toDouble("$someField"),
        5
    )
);

// 执行查询
List<MyClass> result = mongoTemplate.find(new Query(criteria), MyClass.class);
代码说明
  • Criteria.expr(...)直接对应MongoDB原生查询中的$expr关键字,用来定义基于聚合表达式的查询条件。
  • AggregationExpressions.toDouble("$someField")等价于原生查询里的{$toDouble: "$someField"},负责将指定字段转换为Double类型。
  • AggregationExpressions.lte(...)对应原生的$lte比较操作,传入转换后的字段表达式和目标值5,完成数值比较逻辑。

你也可以用另一种等价写法,效果完全一致:

Criteria criteria = Criteria.where("$expr").is(
    AggregationExpressions.lte(
        AggregationExpressions.toDouble("$someField"),
        5
    )
);
原写法的问题

你之前尝试的Criteria.where("someField").lte(5)会生成{ "someField": { "$lte": 5 } }的查询结构,缺少了$toDouble类型转换步骤,因此无法适配需要先转换字段类型再比较的场景。

内容的提问来源于stack exchange,提问作者italktothewind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:02