Запрос проекции MongoDB с переписыванием условия 'и' с использованием Spring-data-mongodb - PullRequest
0 голосов
/ 19 мая 2019

Как я могу переписать этот проекционный запрос, используя spring-data-mongodb? Основная проблема у меня с $ и оператором.

Запрос:

{
 $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 Ответ

1 голос
/ 20 мая 2019

Цитата из документации $ cond :

Выражение $ cond имеет один из двух синтаксисов:

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

Или

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

Тот факт, что ваш сгенерированный запрос использует более подробный синтаксис, не является проблемой.

...