No manual, as
options argumento precisa de um "fields" digite-o, pois existem outros detalhes, como "upsert" e "new" onde isso se aplica. No seu caso, você também quer o "new" opção:User.findOneAndUpdate(
{ "_id": "132324" },
{ "$set": { "hair_color": "yellow" } },
{
"fields": { "first_name":1, "last_name": 1 },
"new": true
}
).exec(...)
Alternativamente, você pode usar
.select() User.select({ "first_name": 1, "last_name": 1 }).findOneAndUpdate(
{ "_id": "132324" },
{ "$set": { "hair_color": "yellow" } },
{ "new": true }
).exec(...)
Observando que sem
"new": true o documento retornado está no estado antes a modificação da atualização foi processada. Algumas vezes é isso que você quer dizer, mas na maioria das vezes você realmente quer o documento modificado.