Изменить агрегацию значений, если условие узла js

#node.js #mongodb #if-statement #aggregate

#node.js #mongodb #if-оператор #агрегировать

Вопрос:

Как изменить агрегированное значение в узле js — mongodb

у меня есть $project :

         $project : {
            type: '$data.type',
        }
  

и это дает мне вывод :

 'type' : [
'bold',
'bold',
'regular',
'bold',
'regular'
]
  

я хочу изменить вывод

если жирный, то толстый, иначе тонкий

я попытался использовать $cond и $switch , но не понимаю, почему я получаю только 1 вывод, и это вывод по умолчанию

 type: {
                        $switch : {
                            branches : [ 
                                {
                                case : { $eq : ['$data.type', 'bold']}, then: 'thick'
                                },
                                {
                                case : { $eq : ['$data.type', 'regular']}, then: 'thin'
                                },
                            ],
                            
                            default: ""
                        }
                    },
  

вывод :

 "type": "",
  

можете ли вы все помочь мне решить эту проблему?
я тоже пробовал $cond $eq , но вывод по-прежнему выводится по умолчанию

спасибо за помощь, ребята

Ответ №1:

$map помогает изменять или просматривать все данные. $cond помогает добавить условие к данным

 db.collection.aggregate([
  {
    $project: {
      type: {
        $map: {
          input: "$type",
          in: {
            $cond: [{$eq: ["$$this","bold"]},
              "thick",
              "thin"
            ]
          }
        }
      }
    }
  }
])
  

Рабочая игровая площадка Mongo