Firebase Andriod, verificando se existe um objeto (com vários filhos)

Estou usando um banco de dados Firebase para armazenar os relatórios dos usuários. Cada usuário pode enviar apenas 10 relatórios diferentes.

No exemplo abaixo, temos um usuário chamado "Jasna Kuljancic" que enviou 3 relatórios.

Minha pergunta é como você pode verificar se um usuário já enviou um relatório específico?

Eu precisaria verificar os valores de "location", "mode", "spinnerOne" e compará-los com o que o usuário digitou e, se ele já estiver lá, não será adicionado ao banco de dados e, se estiver, adicione-o. Aqui está a minha tentativa:

public void checkifentryExistofNot() {
                uniqueID = mDatabaseReference.push().getKey();
                fullname = “Jasna Kuljancic”;
                CATEGORY = “Clinical First”); 

                final Report subreport = new Report(SELECTED_LOCATION,
                        locationEditText.getText().toString(),
                        modeEditText.getText().toString(),
                        Integer.parseInt(dateEditText.getText().toString()));

                mDatabaseReference.child("Students Reports").child(fullname).child(CATAGORY).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                int numberofCount = (int) dataSnapshot.getChildrenCount();
                if (numberofCount == 0) {

                    mDatabaseReference.child("Students Reports").child(fullname).child(CATAGORY).child(uniqueID).setValue(subreport);

                }

                if (numberofCount != 0) {

                    for (DataSnapshot child : dataSnapshot.getChildren()) {
                        Report datareports = child.getValue(Report.class);
                        thelocation = datareports.getLocation();
                        themode = datareports.getMode();

                        if (thelocation.equals(locationEditText.getText().toString()) && themode.equals(modeEditText.getText().toString())) {
                            break;
                        } else {
                            mDatabaseReference.child("Students Reports").child(fullname).child(CATAGORY).child(uniqueID).setValue(subreport);
                        }
                    }
                }
       ,     }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }

O problema com minha solução é que o loop for verificará cada relatório e, em cada caso, incluirá um novo relatório ou não, mas isso ocorrerá com o número de relatórios existentes e deve ser feito apenas uma vez.

Em outras palavras, se tivermos 3 entradas e cada vez que não existir, ele enviará o relatório 3 vezes (o que não é muito ruim). Mas se ele checar o primeiro relatório e ele existir, o loop será encerrado, pois eu tenho uma “interrupção” lá (isso é bom), mas digamos que o segundo relatório seja aquele que será duplicado, ele já teria adicionou-o ao banco de dados porque a primeira entrada não era duplicada. Espero ter esclarecido isso.

Qualquer ajuda seria apreciada. Sinto que acabei de fazer isso e deve haver uma maneira muito mais rápida de fazer isso.

questionAnswers(3)

yourAnswerToTheQuestion