как условно объединить поля в агрегации mongodb - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу построить строку из конкатенации некоторых полей, но я хочу проверить значение каждого поля, прежде чем решу объединить его.

//syntax:
{$projection:{fieldName:{$concat:["$field1","-","$field2","$field3"]}}}

что я хочу?

fieldName=($field1!=null?"$field1-":"")+"$field2"+($field3=="ok"?"approved":"pending")

1 Ответ

0 голосов
/ 06 августа 2019

В первом случае (ноль) вы должны использовать оператор $ifNull.Это вернет значение по умолчанию, если поле пустое или отсутствует.

Во втором случае используйте оператор $cond.

fieldName:{
 $concat:
 [
  {$ifNull:["$field1", ""]},
  "-",
  "$field2", 
  {$cond:[{$eq:['$field3', 'ok']}, "approved", "pending"] }
 ]
}


...