Acho que você ainda precisará fazer isso com duas consultas. Mas, usando uma $ consulta para
update
, você pode mantê-lo em uma consulta caso o EID já exista. db.col.update({"events.eid": 2}}, {$set: {"events.$.title: "Event 4", "events.$.start": new Date(2013, 08, 02}})
Se o valor de retorno disso indicar que nenhum registro foi encontrado, você poderá inseri-lo.