Mongodb solo actualiza los campos seleccionados, pero inserta todos

Estoy intentando utilizar upsert en MongoDB para actualizar un solo campo en un documento si se encuentra O O insertar un documento completamente nuevo con muchos campos. El problema es que me parece que MongoDB reemplaza todos los campos o inserta un subconjunto de campos en su operación de inserción, es decir, no puede insertar más campos de los que realmente quiere actualizar.

Lo que quiero hacer es lo siguiente:

Busco un único valor únicoSi un documento ya existe, solo un valor de marca de tiempo (llamémoslo 'último visto') se actualiza a un nuevo valorSi un documento no existe, lo agregaré con una larga lista de diferentes pares clave / valor que deberían permanecer estáticos durante el resto de su vida útil.

Vamos a ilustrar:

En mi opinión, este ejemplo actualizaría la fecha de 'última lectura' si se encuentra 'nombre', pero si no se encuentra 'nombre', solo insertaría 'nombre' + 'última palabra'.

db.somecollection.update({name: "some name"},{ $set: {"lastseen": "2012-12-28"}}, {upsert:true})

Si agrego más campos (pares clave / valor) al segundo argumento y suelto el $ set, entonces todos los campos se reemplazarán en la actualización, pero tendrían el efecto deseado en la inserción. ¿Hay algo como $ insert o similar para realizar operaciones solo cuando se inserta?

Así que me parece que solo puedo obtener uno de los siguientes:

El comportamiento de actualización correcto, pero insertaría un documento con solo un subconjunto de los campos deseados si el documento no existeEl comportamiento de inserción correcto, pero luego sobrescribiría todos los campos existentes si el documento ya existe

¿Mi entendimiento es correcto? Si es así, ¿es posible resolver esto con una sola operación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta