Trovo difficile mappare il tuo codice sull'API Firebase. Ma quello che stai descrivendo sembra realizzabile utilizzando transazioni o aggiornamenti multi-posizione .
In passato ho trattato questo tipo di aggiornamenti in modo approfondito in:Come scrivere dati denormalizzati in Firebase