sql >> Database >  >> NoSQL >> MongoDB

$ projectie in mongoDB findOneAndUpdate()

Het probleem was met new: true

Hier is een werkend voorbeeld:

Campaign.findOneAndUpdate({'isEnabled': true,  'clients.contact_status_code': 0}, {
            '$set': { 'clients.$.contact_status_code': 1 },
        },
        {
            //new: true <-- this was causing the trouble
            projection: {
                clients: {
                    '$elemMatch': {contact_status_code: 0}, // 0 because the old record gets matched
                },
            },
        },
        (err, campaign) => {
            if (err) {
                return res.send(err);
            }

            res.json(campaign);
        }
    );

Ik neem aan dat wanneer de new: true is ingesteld, verliest mongo de overeenkomende context. Deze aanpak geeft helaas het oude record terug, maar dat voldoet nog steeds aan mijn behoeften om de _id te krijgen.



  1. Meteor $en met $of

  2. Roep naar een lidfunctie all() op array in laravel

  3. Unieke ID's met mongodb

  4. Sorteren op arraylengte