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();