sql >> Databasteknik >  >> NoSQL >> MongoDB

NodeJS/Mongoose/MongoDB - Pull (från array) fungerar inte

Jag upptäckte att kommandot $pull inte heller fungerar för mig om jag inte inkluderar återuppringningen i argumentlistan.

I min situation fungerade inte detta format:

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

Men det här formatet gjorde:

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

Enligt dokumentationen verkar det som om båda borde fungera, men gör det inte. Anledningen är att det första sättet kräver att du anropar .exec() på det returnerade objektet, medan callbackversionen anropar exec() automatiskt. Orsakade viss förvirring för mig också.

Så du måste göra något sånt här:

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



  1. Denna nod startades inte med alternativet replSet

  2. Python och MongoDB databasutveckling

  3. Kan redis-nyckelutrymmesaviseringar skjutas till redis-strömmen istället för pub-/underkanal

  4. Att få undantag när jag gjorde block() på Mono-objektet fick jag tillbaka från ReactiveMongoRepository-objektet