-1

Ich habe ein runningPnL Feld und ein Textfeld sowie ein Datumsfeld.
ich tun möchte:
wenn die Beschreibung ist "Breakup" dann multipliedPnL = 2 * runningPnL
sonst multipliedPnL = runningPnL
mein Code:mongodb: Wie multipliziert man ein Feld mit einer Konstanten in einem if elect branket

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

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

Theres ein Referenzfehler: runningPnL nicht definiert. WHats falsch mit meinem Code? THX viel im Voraus für Ihre Hilfe!

+0

Haben Sie die Feldvariablen in Anführungszeichen versucht umschließt, z.B. der Teil 'then: {" $ multiplizieren ": [" $ runningPnL ", 2]}, sonst:" $ runningPnL "'? – chridam

+1

Sie müssen uns Ihr Beispieldokument (Sammlungsdaten) zeigen, um zu sehen, wo sich "runningPnL" befindet. Ich denke, das wird uns sagen, wie wir zu "runningPnl" kommen. Aber dein Code sieht korrekt aus. – JBone

+0

haha, das funktioniert! vielen Dank! –

Antwort

0

Können Sie versuchen, $ mul? Was ist deine Mongodb-Version?

Referenz: https://docs.mongodb.com/manual/reference/operator/update/mul/

Ein Beispiel für die Dokumentation ist wie dieser

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

Nicht sicher, ob dies die Frage beantwortet, das OP möchte das Feld unter einer bestimmten Bedingung projizieren, nicht um die Sammlung zu aktualisieren. – chridam

+0

ist es gelöst thx alle –

Verwandte Themen