Dopo alcune ore trascorse a cercare di scoprire dove fosse l'errore e perché non stava aggiornando il database, ho scoperto che in realtà ha aggiornato il database. Il problema era che stavo controllando l'aggiornamento in mongo shell e dopo averlo aggiornato su una richiesta di post di nodejs, non veniva visualizzato nella shell come aggiornato. Tuttavia, quando console.log() le etichette, è stato aggiornato. Quindi ho studiato ulteriormente il problema e ho scoperto che il problema non era la shell mongo, ma l'uso errato dell'aggiornamento del comando mongoose. Mi mancava l'argomento del callback. Dopo aver aggiunto la funzione di callback, i dati sono stati aggiornati immediatamente nella mongo shell.
Quindi invece di fare:
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
Non bisogna dimenticare di aggiungere la richiamata:
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...
O come una risposta duplicata suggerisce di eseguire exec():
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()