sql >> Database teknologi >  >> NoSQL >> MongoDB

NodeJS/Mongoose/MongoDB - Pull (fra array) virker ikke

Jeg opdagede, at $pull-kommandoen heller ikke virker for mig, medmindre jeg inkluderer tilbagekaldet i argumentlisten.

I min situation virkede dette format ikke:

UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}});

Men dette format gjorde:

UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}, function(err, data){
  console.log(err, data);
});

Ifølge dokumentationen ser det ud til, at begge dele burde virke, men det gør det ikke. Årsagen er, at den første måde kræver, at du kalder .exec() på det returnerede objekt, mens tilbagekaldsversionen kalder exec() automatisk. Det skabte også en del forvirring for mig.

Så du skal gøre noget som dette:

UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}).exec();



  1. MongoDB-forespørgsel, sorter og tag n'te dokument for gruppe

  2. Sails.js opgraderer til v1 omvendt store og små forespørgsler

  3. Vil en Mongo $nær returnere dokumenter, for hvilke ethvert punkt i et MultiPoint er inden for rækkevidde?

  4. Redis-taster funktion til match med flere mønstre