Więc muszę pola niestandardowego obliczoną MongoDB następująco
if(field1 =="A") ->customfield=10
else if(field1 =="B" )->customfield=20
else (field1 =="C") ->customfield=15
Używam agregacji wraz z oświadczeniem $ projektu. Ale operator $ cond nie zezwala na elseif (subrananizacja innego) i pozwala tylko na dwie statyczne gałęzie, jeśli i jeszcze. Korzystanie z zagnieżdżonych ElseIf powoduje
"exception: field inclusion is not allowed inside of $expressions"
Herezje mój kwerendy (co daje mi błąd)
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}]);
Czy istnieje metoda lub obejście tego. Przepraszam, jeśli to powtarzające się pytanie, ale nie mogłem znaleźć podobnego.
Trzeba "$ pole1", a następnie "Field1". Typo? –
Dzięki, ale to było wynikiem mojego pośpiechu (podczas pisania). Zmieniono to tak, aby odzwierciedlało pierwotne zapytanie, przeprosiny za zamieszanie. – humblerookie
Nie jestem w 100% pewny, ale nie sądzę, że istnieje jakaś składnia, która może skrócić twoje zapytanie. Będziesz musiał zagnieździć 'if 'wewnątrz' else'. – ujvl