Je pense que vous devrez faire deux requêtes distinctes ici. C'est tout simplement trop conditionnel pour que l'analyseur de requêtes MongoDB puisse le gérer.
Vous devrez donc placer votre logique dans deux requêtes distinctes, la seconde ressemblant à :
$db->akis->update(
array("h" => (string) $_SESSION["_id"], "m" => array('$exists' => true)),
array('$set' => array("i" => $name)),
array("multiple" => true)
);
Courir les uns après les autres.