sí, el código anterior funciona perfectamente bien. Ahora sé dónde estaba mi error. Quería hacerlo a prueba de balas, así que pensé que sería mejor usar save() en DBCollection al final y guardar explícitamente la lista de compras DBObject:
shoppingLists.save( shoppingList );
Ahora leí en algún otro foro que los objetos que recupera de la base de datos no se sincronizan con la base de datos después (ahora me parece lógico :)). Así que sobrescribí los cambios yo mismo cada vez. Después de eliminar la línea de arriba, funcionó :)
Entonces, una regla importante:cuando actualice su DBCollection
– ¡Esto se envía directamente a la base de datos! – no guarde un DBObject
que preguntaste antes de la actualización! ¡Sobrescribirá tu actualización!