O Mongertb upsert atualiza somente os campos selecionados, mas insere todos

Eu estou tentando usar upsert no MongoDB para atualizar um único campo em um documento, se encontrado ou inserir um novo documento inteiro com muitos campos. O problema é que me parece que o MongoDB substitui cada campo ou insere um subconjunto de campos em sua operação de upsert, ou seja, ele não pode inserir mais campos do que realmente deseja atualizar.

O que eu quero fazer é o seguinte:

Eu pesquiso por um único valor únicoSe um documento já existir, somente um valor de registro de data e hora (vamos chamá-lo 'lastseen') é atualizado para um novo valorSe um documento não existir, eu o adicionarei com uma longa lista de diferentes pares chave / valor que devem permanecer estáticos pelo restante de sua vida útil.

Vamos ilustrar:

Este exemplo, no meu entender, atualiza a data do 'lastseen' se 'nome' for encontrado, mas se 'nome' não for encontrado, ele só irá inserir 'nome' + 'último'.

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

Se eu adicionasse mais campos (pares chave / valor) ao segundo argumento e soltasse o $ set, então cada campo seria substituído na atualização, mas teria o efeito desejado na inserção. Existe algo como $ insert ou similar para executar operações somente ao inserir?

Então, parece-me que só posso obter um dos seguintes:

O comportamento de atualização correto, mas seria inserir um documento com apenas um subconjunto dos campos desejados se o documento não existirO comportamento de inserção correto, mas sobrescreveria todos os campos existentes se o documento já existir

Meu entendimento está correto? Se sim, isso é possível resolver com uma única operação?

questionAnswers(2)

yourAnswerToTheQuestion