Devi usare la notazione punto per gli array.
Cioè, dovresti sostituire $
con l'indice in base zero dell'elemento che stai tentando di aggiornare.
Ad esempio:
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.0.email" : '2222'} });
aggiornerà la prima email del primo amico e
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.1.email" : '2222'} })
aggiornerà la seconda email del primo amico.