Jeg spekulerer på, om driveren er smart nok til kun at opdatere den mindste delmængde af ændringer, eller om den blot blindt opdaterer det hele?
Nej, hvis du bruger den "normale" opdateringsmetode, vil hele objektet blive sendt over ledningen. Jeg formoder, at databaseserveren selv vil være klog nok til kun at opdatere de nødvendige indekser (og ikke dem, der ikke har ændret sig), hvis muligt (dvs. objektet kunne opdateres på plads og behøvede ikke at blive flyttet, fordi det voksede for meget)
Hvad du kan gøre er at bruge funktionerne "atomic update modifier". Java-dokumentationen er lidt let på dem, men da driveren bare transmitterer JSON, burde tingene fra ikke-Java-tutorials fungere, for eksempel:
shapes.update((DBObject)JSON.parse( "{ 'foo' : 'bar'}"),
(DBObject) JSON.parse( "{ '$set' : { 'foo': 'bat'}}") );