2016-10-09 7 views
0

Ich habe eine Funktion, die Kredit zu addieren oder zu verringern. Aber mein unterer Code ersetzt nur den Kreditwert. Gibt es eine Abkürzung in Mungo, die ich inkrementieren oder dekrementieren kann? Sonst muss ich den Wert erhalten und dann wieder einfügen, was meiner Meinung nach nicht der richtige Weg ist.findOneAndUpdate Inkrement anstelle von Update in Mungo

function update_total_credit(total_amount, topup_value){ 
      User.findOneAndUpdate(
       {email: user_email}, 
       {$set:{credit:total_amount}}, 
       {new: true}, 
       function(err, response){ 
       if(err){ 
        res.json(0); 
       }else{ 
        res.json(response.credit); 
       } 
      }); 

     } 
+0

Es ist die Kredit-Wert ersetzt werden, weil das ist, was Sie einstellen. '$ set: {Kredit: total_amount}'. Nein, wo in deinem Code hast du 'topup_value' verwendet. –

+0

@Kai Ich weiß das, ich frage nicht, warum es meinen Wert ersetzt. –

+2

Haben Sie '$ inc' probiert? – abdulbarik

Antwort

0

können Sie den Wert dynamisch festgelegt und in der

function update_total_credit(total_amount, topup_value) { 
//The flag value means your breakpoint where you decide which value should go in query, you can change on your requirement basis 
    var flag = 1;//increament by 1 every time 
    if (!flag) 
    flag = -1;//decreament by 1 every time 
    User.findOneAndUpdate({ 
     email: user_email 
    }, { 
     $inc: { 
     credit: flag 
     } 
    }, 
    function(err, response) { 
     if (err) { 
     res.json(0); 
     } else { 
     res.json(response.credit); 
     } 
    }); 
} 

Siehe die Referenz Abfrage passieren hier für $inc

+0

$ inc kann negativen Präfix verwenden? Ich dachte, da ist etwas wie $ dec nein? –

+1

'$ inc = 1' bedeutet Inkrement um 1 und' $ inc = -1' bedeutet Dekrement um 1 – abdulbarik

+0

https://docs.mongodb.com/manual/reference/operator/update/inc/ – abdulbarik

Verwandte Themen