update with upsert: true is not updating in express,mongoose?

express, javascript, mongodb, node.js

Solution

 var promiseArr = [];
    for (var i = 0; i < summary.length; i++) {
        promiseArr.push(saveOrUpdate(summary[i].mobilenumber, summary[i]));
    }


    function saveOrUpdate(phone, dataToUpdate) {
        return new Promise((resolve, reject) => {

            //Update document if found or insert otherwise
            // upsert:true -> If set to true, creates a new document when no document matches the query criteria
            Summary.findOne({
                "mobilenumber": phone
            }, function(err, data) {
                var newSummary = dataToUpdate;
                console.log(data);
                console.log(newSummary);
                if (data) {
                    newSummary.negativepoint += data.negativepoint;
                    newSummary.positivepoint += data.positivepoint;
                    newSummary.balancepoints += data.balancepoints;
                }
                Summary.update({
                        "mobilenumber": phone
                    },
                    dataToUpdate, {
                        upsert: true
                    },
                    function(err, raw) {
                        if (err) {
                            console.log(err);
                        } else {
                            console.log(raw);
                        }

                    });

            });



        });
    }

Problem

``` var logs = [{ mobilenumber: '1', ref: 3, points: 1000, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }, { mobilenumber: '1', ref: 6, points: 2000, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }, { mobilenumber: '2', ref: 7, points: 2600, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }, { mobilenumber: '2', ref: 15, points: -1500, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }, { mobilenumber: '10', ref: 15, points: 800, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }, { mobilenumber: '11', ref: 15, points: 110, ctype: 'mycredit', entry: 'sdfsdf', entry: 0 }]; var summary = []; var positive = 0, negative = 0, total = 0, count = 0; for (var i = 0; i < logs.length; i++) { count = 0; positive = 0; negative = 0; total = 0; for (var j = i; j < logs.length; j++) { if (logs[i].mobilenumber === logs[j].mobilenumber) { if (logs[j].points < 0) { negative += logs[j].points; } else if (logs[j].points >= 0) { positive += logs[j].points; } total += logs[j].points; count++; } } i += count - 1; var obj = { mobilenumber: logs[i].mobilenumber, positivepoint: positive, negativepoint: negative, balancepoints: total } summary.push(obj); } ``` if you run above code you will get Summary objects in below code i am trying to insert/update code but insert is working but its not updating ``` var promiseArr = []; for(var i = 0; i<summary.length;i++) { promiseArr.push(saveOrUpdate(summary[i].mobilenumber, summary[i])); } function saveOrUpdate (phone, dataToUpdate) { return new Promise((resolve, reject) => { //Update document if found or insert otherwise // upsert:true -> If set to true, creates a new document when no document matches the query criteria Summary.update({"mobilenumber": phone}, dataToUpdate, {upsert: true}, function(err, raw){ if (err) { console.log(err); }else { console.log(raw); } }); }); } ``` Here i am trying to insert or update Summary object in Summary collection . i am searching mobilenumber in Summarycollection if mobilenumber already exsist i am updating that document otherwise ,i am creating new document for that mobilenumber insert is working but if mobilenumber already ther in summary collection its not updating help me out i m trying since three days i am using mongoose and database mlab version 3.2.11

Original source

Related problems