Debe utilizar la notación de puntos para las matrices.
Es decir, debe reemplazar el $
con el índice de base cero del elemento que está intentando actualizar.
Por ejemplo:
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.0.email" : '2222'} });
actualizará el primer correo electrónico del primer amigo, y
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.1.email" : '2222'} })
actualizará el segundo correo electrónico del primer amigo.