Có vẻ như {"name": "sitt"}
luôn giải quyết thành true . Thay vào đó, bạn nên sử dụng **$eq**
để làm cho nó hoạt động.
cũng lưu ý rằng **$match**
của bạn giai đoạn có thể được đơn giản hóa rất nhiều vì 3 biểu thức của bạn tương đương với
{$match: {name: /sitt/i}}
để truy vấn của bạn trở thành:
db.getCollection('tags').aggregate([
{
$match:{
name:/sitt/i
}
},
{
$project:{
name: 1,
score:{
$switch:{
branches:[
{
case:{
$eq:[
"$name",
"sitt"
]
},
then:100
}
],
default:50
}
}
}
}
])