tak, powyższy kod działa idealnie. Teraz wiem, gdzie był mój błąd. Chciałem zrobić to w sposób kuloodporny, więc pomyślałem, że najlepiej będzie użyć save() na końcu DBCollection i jawnie zapisać DBObject listy zakupów:
shoppingLists.save( shoppingList );
Teraz przeczytałem na innym forum, że obiekty, które pobierasz z bazy danych, nie są później synchronizowane z bazą danych (brzmi to teraz trochę logicznie :) ). Dlatego za każdym razem sam nadpisywałem zmiany. Po usunięciu linii powyżej zadziałało :)
Więc jedna ważna zasada:kiedy aktualizujesz swój DBCollection
– to jest wysyłane bezpośrednio do bazy danych! – nie zapisuj DBObject
o które pytałeś przed aktualizacją! To nadpisze twoją aktualizację!