Me resulta difícil asignar su código a la API de Firebase. Pero lo que estás describiendo parece que se puede lograr usando transacciones o actualizaciones de ubicaciones múltiples .
Cubrí este tipo de actualizaciones en profundidad en el pasado en:Cómo escribir datos desnormalizados en Firebase