0
我有一个字段名为level
的字段值为0到3的用户集合。我试图用用户级别的文本表示返回生成的字段。到目前为止,我有这个,但它取代了level
字段。
{ $project: {
'_id': 1,
'name': 1,
'email': 1,
'username': 1,
'password': 1,
'registered': 1,
'level': {
$switch: {
branches: [
{ case: 0, then: 'Pending' },
{ case: 1, then: 'Regular' },
{ case: 2, then: 'User manager' },
{ case: 3, then: 'Administrator' }
],
default: 'Unknown'
}
},
}
我想在我的聚合输出中有一个名为levelName
的字段。我该怎么做呢?我试过这个:
'levelName': {
$switch: {
branches: [
{ case: { level: 0 }, then: 'Pending' },
{ case: { level: 1 }, then: 'Regular' },
{ case: { level: 2 }, then: 'User manager' },
{ case: { level: 3 }, then: 'Administrator' }
],
default: 'Unknown'
}
},
但无济于事。
使用'平等$ eq'运营商表达比较。就像'{case:{“$ eq”:[“$ level”,0]},然后:'Pending'} ..' – Veeram
问题是,不清楚你在问什么而不显示文档和预期的结果。你确实需要一个“场比较”来返回任何东西,你似乎认为操作员正在比较你投射的同名字段,但事实并非如此。操作员只是一般的,需要被告知要比较什么作为输入。 –
是的!就是这样。谢谢Veeram! –