Mustafa, i vincoli univoci non vengono applicati all'interno di un singolo array, sebbene vengano applicati tra i documenti di una raccolta. Questo è un bug noto che non verrà corretto per un po':
https://jira.mongodb.org/browse/SERVER-1068
C'è una soluzione alternativa, però. Mantieni il tuo indice univoco e:
1) Assicurati che la tua applicazione non inserisca nuovi documenti con valori duplicati nell'array. Puoi verificare l'unicità del codice della tua applicazione prima dell'inserimento.
2) Quando si aggiornano i documenti esistenti, utilizzare $addToSet invece di $push.