spring-data - 投影中的Spring数据MongoDB条件

标签 spring-data spring-data-mongodb

如何使用 Spring Data 在聚合过程中在投影阶段添加条件?

例如,我想添加将通过公式 field1/field2 计算的 new_field。从代码方面来看,它看起来像:

ProjectionOperation projectionOperation = project("field1", "field2").andExpression("field1 / field2").as("field3");

但是如果 field2 等于 0,我会收到错误。因此,为了避免这种情况,建议使用 $cond 运算符,但我不知道它在代码中应该是什么样子。大家有什么想法吗?

注意。表达式 field2 != 0 ? 1 : 0 不起作用(即使“SpEL”允许这样的语法)。

最佳答案

有点晚了,但对于这个问题的 future 观众来说,以下代码对我有用。当field2为0时,返回0作为field3的值。

ProjectionOperation projectionOperation = Aggregation.project("field1, field2")
                .and(AggregationSpELExpression.expressionOf("cond(field2 == 0, 0, field1/field2)"))
                .as("field3");

关于spring-data - 投影中的Spring数据MongoDB条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38015488/

相关文章:

java - 如何使用存储库接口(interface)在 Spring Data 中通过其嵌套对象的 objectId 查找集合?

java - 如何使用 mongoDB 条件查询在 java 中获得更干净的代码

java - 如何使用Spring以只读和读写方式进行数据库路由

java - Spring Data JPA - javax.persistence.TransactionRequiredException : Executing an update/delete query

mongodb - Spring Data MongoDB 查找查询不返回任何结果

mongodb - MongoException : Index with name: code already exists with different options

java - 使用spring mongo查询oplog时间戳

java - CrudRepository 保存方法不会在数据库中保存任何内容

java - 在继承字段上使用 Spring Data 时发生 MappingException(检测到不明确的字段映射)

java - Spring Data错误由: org. hibernate.QueryException引起:无法解析属性