Hai provato
BasicDBObject orderBy = new BasicDBObject("labels.0.value", 1);
Non è ovvio, ma la documentazione di MongoDB lo elude. L'uso del segno $ corrisponde al primo elemento, ma la specifica del numero dell'elemento dell'array sembra funzionare. Se qualcuno ha un documento migliore che descrive il comportamento, per favore risponda con il link.
Dalla documentazione
The positional $ operator facilitates updates to arrays that contain embedded
documents. Use the positional $ operator to access the fields in the embedded
documents with the dot notation on the $ operator.
db.collection.update( { <query selector> }, { <update operator>: { "array.$.field" : value } } )
La documentazione è qui