Поэтому мне нужно пользовательское поле, рассчитанное в MongoDB следующим образом:
if( field1 =="A") ->customfield=10
else if(field1 =="B" )->customfield=20
else (field1 =="C" ) ->customfield=15
Я использую агрегацию вместе с оператором $ project. Но оператор $ cond не позволяет elseif (подветвление else) и просто разрешает две статические ветки if и else. Использование вложенных elseif вызывает
"exception: field inclusion is not allowed inside of $expressions"
Вот мой запрос (который дает мне ошибку)
db.items.aggregate([ { $project :
{
name: 1,
customfield:
{
$cond: { if: { $eq: [ "$field1", "4" ] }, then: 30,
else: {
if:
{ $eq: ["$field1","8"]},
then: 25, else: 10}}
}
}},{ $sort: { customfield: 1 }},{$limit:12}]);
Есть ли способ или обходной путь для этого. Приношу свои извинения, если это повторный вопрос, но я не смог найти аналогичный.