Parece
{"name": "sitt"}
sempre resolve para true . Em vez disso, você deve usar o **$eq**
operador para fazê-lo funcionar. observe também que seu
**$match**
stage pode ser muito simplificado, pois suas 3 expressões são equivalentes a {$match: {name: /sitt/i}}
então sua consulta se torna:
db.getCollection('tags').aggregate([
{
$match:{
name:/sitt/i
}
},
{
$project:{
name: 1,
score:{
$switch:{
branches:[
{
case:{
$eq:[
"$name",
"sitt"
]
},
then:100
}
],
default:50
}
}
}
}
])