sim, o código acima funciona perfeitamente bem. Agora sei onde estava meu erro. Eu queria fazer isso à prova de balas, então pensei que seria melhor usar save() no DBCollection no final e salvar explicitamente a lista de compras DBObject:
shoppingLists.save( shoppingList );
Agora li em algum outro fórum que os objetos que você recupera do banco de dados não são sincronizados com o banco de dados posteriormente (parece meio lógico para mim agora :) ). Então eu mesmo sobrescrevi as mudanças todas as vezes. Depois de remover a linha acima funcionou :)
Portanto, uma regra importante:quando você atualiza seu
DBCollection
– isso é enviado diretamente para o banco de dados! – não salve um DBObject
que você consultou antes da atualização! Ele substituirá sua atualização!