sì, il codice sopra funziona perfettamente. Ora so dov'era il mio errore. Volevo farlo a prova di proiettile, quindi ho pensato che sarebbe stato meglio usare save() su DBCollection alla fine e salvare esplicitamente la lista della spesa DBObject:
shoppingLists.save( shoppingList );
Ora ho letto in qualche altro forum che gli oggetti che recuperi dal database non vengono quindi sincronizzati con il database in seguito (mi sembra logico ora :)). Quindi ho sovrascritto io stesso le modifiche ogni volta. Dopo aver rimosso la riga sopra ha funzionato :)
Quindi una regola importante:quando aggiorni la tua DBCollection
– questo viene inviato direttamente al database! – non salvare un DBObject
che hai interrogato prima dell'aggiornamento! Sovrascriverà il tuo aggiornamento!