Eu encontrei exatamente o mesmo problema e não havia solução simples para <2.4, no entanto, desde 2.4, o $setOnInsert operador permite que você faça exatamente isso.
db.collection.update( <query>,
{ $setOnInsert: { "firstTime": <TIMESTAMP> } },
{ upsert: true }
)
Consulte as 2.4 notas de versão do setOnInsert para mais informações.