Me encontré exactamente con el mismo problema y no había una solución simple para <2.4; sin embargo, desde 2.4, $setOnInsert operador te permite hacer exactamente eso.
db.collection.update( <query>,
{ $setOnInsert: { "firstTime": <TIMESTAMP> } },
{ upsert: true }
)
Consulte las notas de la versión 2.4 de setOnInsert para más información.