Database

[{"f1":"v1","f2":{"id":1,"sub":"subv","updatedAt":123}}]

Query

db.collection.update({"f2.id":1},[{$set:{"f2":{$cond:[{$lt:["$f2.updatedAt",100]},{"id":1,"sub":"newsubv","updatedAt":100},"$f2"]},"f1":{$ifNull:["$f1","v1"]},}}],{"upsert":true})

Result