-1

У меня есть поле fieldPNL и поле описания, а также поле даты.
я хочу сделать:
если описание "Распад", то multipliedPnL = 2 * runningPnL
иначе multipliedPnL = runningPnL
мой код:mongodb: как умножить поле на константу в if else branket

db.getCollection('user0').aggregate(
    [ 
     { 
     $project: 
      { 
      thedate: 1, 

      realPnL: 
       { 
       $cond: { if: { $gte: [ "$description", "Breakup" ] }, then: {$multiply:[$runningPnL,2]}, else: $runningPnL} 
       } 
      } 
     } 
    ] 
) 

Theres ссылочный ошибку: не runningPnL определена. Какая ошибка с моим кодом? thx много за вашу помощь!

+0

Вы пытались вмещающих полевые переменные в кавычки, например part 'then: {" $ multiply ": [" $ runningPnL ", 2]}, else:" $ runningPnL "'? – chridam

+1

вам нужно показать нам образец документа (данные коллекции), чтобы увидеть, где находится «runningPnL». Я думаю, что это скажет нам, как добраться до «runningPnl». Но ваш код выглядит правильно. – JBone

+0

ха-ха, который работает! большое спасибо! –

ответ

0

Можете ли вы попробовать $ mul? Какая у вас версия mongodb?

Ссылка: https://docs.mongodb.com/manual/reference/operator/update/mul/

Пример для документации, как этот

db.products.update(
{ _id: 1 }, 
{ $mul: { price: 1.25 } } 
) 
+0

Не уверен, что это отвечает на вопрос, OP хочет проецировать поле на заданное условие, а не обновлять коллекцию. – chridam

+0

его решение thx all –