#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