Odkryłem, że polecenie $pull również nie działa dla mnie, chyba że uwzględnię wywołanie zwrotne na liście argumentów.
W mojej sytuacji ten format nie działał:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}});
Ale ten format:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}, function(err, data){
console.log(err, data);
});
Zgodnie z dokumentacją wydaje się, że oba powinny działać, ale nie działają. Powodem jest to, że pierwszy sposób wymaga wywołania .exec() na zwróconym obiekcie, podczas gdy wersja wywołania zwrotnego wywołuje exec() automatycznie. Spowodował również dla mnie pewne zamieszanie.
Musisz więc zrobić coś takiego:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}).exec();