使用Spring-data-mongodb重写具有'and'条件的MongoDB投影查询

时间:2019-05-19 17:24:07

标签: mongodb spring-data-mongodb

如何使用spring-data-mongodb重写此投影查询? 我遇到的主要问题是$ and运算符。

查询:

{
 $project: {
  "_id": 1,
  "totalAmount": {
   $cond: [{
    $and: [{
     $eq: ["$type", "entity"]
    }, {
     $eq: ["$status", "ACTIVE"]
    }]
   }, "$amount", 0]
  },
 }
}

我写了

ConditionalOperators.Cond operator = ConditionalOperators
.when(new Criteria()      
.andOperator(Criteria.where("type").is("entity") , Criteria.where("status").is("ACTIVE")))
.thenValueOf("amount").otherwise(0.0);

ProjectionOperation projectionOperationNavLogs = project().and("_id").as("_id").and(operator).as("totalAmount"); 

但这不是相同的查询

1 个答案:

答案 0 :(得分:1)

引用$cond documentation

  

$ cond表达式具有以下两种语法之一:

{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case-> } }
     

{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }

生成的查询使用更冗长的语法这一事实不是问题。