Guardar Vs Insertar:
En sus ejemplos dados, el comportamiento es esencialmente el mismo.
save
se comporta de manera diferente si se pasa con un parámetro "_id".
Para guardar, si el documento contiene _id
, alterará la consulta de la colección en el _id
campo, si no, se insertará.
Si un documento no existe con el valor _id especificado, el método save() realiza una inserción con los campos especificados en el documento.
Si existe un documento con el valor _id especificado, el método save() realiza una actualización, reemplazando todos los campos del registro existente con los campos del documento.
Guardar vs Actualizar :
update
modifica un documento existente que coincide con sus parámetros de consulta. Si no existe tal documento coincidente, es entonces cuando upsert
viene en la imagen.
upsert : false
:No pasa nada cuando no existe tal documentoupsert : true
:Se crea un nuevo documento con contenidos iguales a los parámetros de consulta y parámetros de actualización
save
:No permite ningún parámetro de consulta. si _id
existe y hay un documento coincidente con el mismo _id
, lo reemplaza. Cuando no se especifica _id/no hay documento coincidente, inserta el documento como uno nuevo.