Narazil jsem na přesně stejný problém a pro <2.4 neexistovalo žádné jednoduché řešení, nicméně od verze 2.4 je $setOnInsert operátor, udělejte přesně to.
db.collection.update( <query>,
{ $setOnInsert: { "firstTime": <TIMESTAMP> } },
{ upsert: true }
)
Viz poznámky k vydání 2.4 setOnInsert pro více informací.