Você precisa usar a notação de ponto para as matrizes.
Ou seja, você deve substituir o
$
com o índice baseado em zero do elemento que você está tentando atualizar. Por exemplo:
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.0.email" : '2222'} });
atualizará o primeiro e-mail do primeiro amigo e
db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.1.email" : '2222'} })
atualizará o segundo e-mail do primeiro amigo.