Après quelques heures passées à essayer de trouver où se trouvait l'erreur et pourquoi elle ne mettait pas à jour la base de données, j'ai découvert qu'elle avait effectivement mis à jour la base de données. Le problème était que je vérifiais la mise à jour dans le shell mongo et après l'avoir mise à jour via la demande de publication de nodejs, elle n'apparaissait pas dans le shell comme mise à jour. Cependant, lorsque je console.log() les étiquettes, elles ont été mises à jour. J'ai donc étudié le problème plus en détail et j'ai découvert que le problème n'était pas le shell mongo, mais une utilisation incorrecte de la mise à jour de la commande mongoose. Il me manquait l'argument de rappel. Après avoir ajouté la fonction de rappel, les données ont été mises à jour immédiatement dans le shell mongo.
Donc au lieu de faire :
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
Il ne faut pas oublier d'ajouter le callback :
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}, function(err, affected) {
if(err)
console.log(err)
else
console.log(affected)
// After successful update, redirect here to another page...
Ou comme une réponse en double suggère d'exécuter exec() :
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()