Я пытаюсь создать новую коллекцию с полем 'des c' с учетом условия в поле в массиве документов. Для этого я использую оператор $ cond
Пример коллекции источника следующий:
{
"_id" : ObjectId("5e8ef9a23e4f255bb41b9b40"),
"Brand" : {
"models" : [
{
"name" : "AA"
},
{
"name" : "BB"
}
]
}
}
{
"_id" : ObjectId("5e8ef9a83e4f255bb41b9b41"),
"Brand" : {
"models" : [
{
"name" : "AG"
},
{
"name" : "AA"
}
]
}
}
Запрос следующий:
db.runCommand({
aggregate: 'cars',
'pipeline': [
{
'$project': {
'desc': {
'$cond': {
if: {
$in: ['$Brand.models.name',['BB','TC','TS']]
},
then: 'Good',
else: 'Bad'
}
}
}
},
{
'$project': {
'desc': 1
}
},
{
$out: 'cars_stg'
}
],
'allowDiskUse': true,
})
Проблема в том, что оператор $ cond всегда возвращает значение "else". Я также пробовал оператор $ или с $ eq или $ и с $ ne , но всегда возвращаю "else".
Что я делаю не так или как мне это исправить?
Спасибо