Zastanawiam się, czy sterownik jest wystarczająco inteligentny, aby zaktualizować tylko najmniejszy podzbiór zmian, czy po prostu aktualizuje na ślepo całość?
Nie, jeśli użyjesz „normalnej” metody aktualizacji, cały obiekt zostanie przesłany przez przewód. Podejrzewam, że sam serwer bazy danych będzie na tyle sprytny, aby zaktualizować tylko niezbędne indeksy (a nie te, które się nie zmieniły), jeśli to możliwe (tj. obiekt mógł być aktualizowany na miejscu i nie musiał być przenoszony, ponieważ zbytnio się rozrósł)
To, co możesz zrobić, to użyć funkcji „modyfikatora aktualizacji atomowej”. Dokumentacja Java jest nieco lekka, ale ponieważ sterownik po prostu przesyła JSON, rzeczy z samouczków innych niż Java powinny działać, na przykład:
shapes.update((DBObject)JSON.parse( "{ 'foo' : 'bar'}"),
(DBObject) JSON.parse( "{ '$set' : { 'foo': 'bat'}}") );