Dal manuale, le options l'argomento necessita di un "fields" digitarlo poiché ci sono altri dettagli come "upsert" e "new" dove questo si applica. Nel tuo caso anche vuoi il "new" opzione:
User.findOneAndUpdate(
{ "_id": "132324" },
{ "$set": { "hair_color": "yellow" } },
{
"fields": { "first_name":1, "last_name": 1 },
"new": true
}
).exec(...)
In alternativa puoi usare .select()
User.select({ "first_name": 1, "last_name": 1 }).findOneAndUpdate(
{ "_id": "132324" },
{ "$set": { "hair_color": "yellow" } },
{ "new": true }
).exec(...)
Notando che senza "new": true il documento restituito è nello stato prima la modifica dell'aggiornamento è stata elaborata. A volte questo è ciò che intendi, ma la maggior parte delle volte vuoi davvero il documento modificato.