Publicar mi propia respuesta para que esto no quede abierto:
Los modelos de la versión 4 (estables lanzados el 25 de marzo de 2015) ahora exponen un hydrate()
método. Ninguno de los campos se marcará como sucio inicialmente, lo que significa una llamada a save()
no hará nada hasta que se mute un campo.
Es muy importante tener en cuenta que está destinado a ser utilizado para convertir un objeto JS simple cargado desde la base de datos en un documento mangosta. Si está recibiendo un documento de un servicio REST o algo así, debe usar findById()
y update()
.
Para aquellos que viven peligrosamente:
Si realmente desea actualizar un documento existente sin tocar la base de datos, supongo que podría llamar a hydrate()
, marque los campos como sucios y luego llame a save()
. Esto no es muy diferente al método de establecer doc.isNew = false;
como sugerí en mi pregunta original. Sin embargo, Valeri (del equipo de mangosta) sugirió no hacerlo. Podría causar errores de validación y otros problemas de casos extremos y, en general, no es una buena práctica. findById es realmente rápido y no será su cuello de botella.