sql >> Database >  >> NoSQL >> MongoDB

NodeJS/Mongoose/MongoDB - Pull (van array) werkt niet

Ik ontdekte dat het $pull-commando ook niet voor mij werkt, tenzij ik de callback in de lijst met argumenten opneem.

In mijn situatie werkte dit formaat niet:

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

Maar dit formaat deed:

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

Volgens de documentatie lijkt het alsof beide zouden moeten werken, maar dat is niet zo. De reden is dat de eerste manier vereist dat je .exec() aanroept op het geretourneerde object, terwijl de callback-versie exec() automatisch aanroept. Veroorzaakte ook wat verwarring bij mij.

Dus je moet zoiets als dit doen:

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



  1. Versleuteling gebruiken om MongoDB-gegevens te beschermen

  2. Hoe u enkele collecties samenvoegt en sorteert in één pijplijn in Mongo

  3. MongoDB-taakverdeling in meerdere AWS-instanties

  4. mongodb tekst zoeken met meerdere talen