Q:

Retrieve data from Firebase but snaptshop.get returns null

I am really new to Firebase. 
I am making an Android app that uses firestore as database.  My problem is when I try to check if a certain data exists.  It will always say it does not. 
This is the method where this is happening. 
private void usernameInDatabase(final String username){

        if (registration ! = null)
            registration.remove();

        registration = utilizadores.addSnapshotListener(new EventListener<DocumentSnapshot>() {
            @Override public void onEvent(@Nullable DocumentSnapshot snapshot,
                                          @Nullable FirebaseFirestoreException e) {
                if (e ! = null) {
                    Log.w("Utilizadores", "Listen failed.",  e);
                    return;
                }
                if (snapshot ! = null && snapshot.exists()) {
                    Log.d("Utilizadores", snapshot.getData().toString());
                    Log.d("Utilizadores", username);
                    if (snapshot.get(username) == null) {
                        loginFormState.setValue(new LoginFormState(R.string.utilizadorNaoBaseDados, null));
                        utilizadorNaBaseDados = false;
                        Log.d("Utilizadores", "Not Database :(");
                    } else {
                        utilizadorNaBaseDados = true;
                        Log.d("Utilizadores", "base de dados ;D");
                    }
                } else {
                    Log.d("Utilizadores", "Current data: null");
                }
            }
        });
    }

As you can see, I check the data that I can retrieve from firestore here:
                    Log.d("Utilizadores", snapshot.getData().toString());
                    Log.d("Utilizadores", username);

This is what I get in logcat:

{daniel@gmail.com={dataNasc=Timestamp(seconds=862182000, nanoseconds=0), mail=daniel@gmail.com, pass=, nome=Daniel Marco, id=danMar125}, ester@gmail.com={dataNasc=Timestamp(seconds=902876400, nanoseconds=0), mail=ester@gmail.com, pass=, nome=Ester Mendes, id=est124}, ola@g.co=hgjk, marcio@gmail.com={dataNasc=Timestamp(seconds=680914800, nanoseconds=0), mail=marcio@gmail.com, pass=, nome=Márcio Marques, id=marMar123}, marco@gmail.com={dataNasc=Timestamp(seconds=923180400, nanoseconds=0), mail=marco@gmail.com, pass=, nome=Marco António, id=marAnt545}, maria@gmail.com={dataNasc=Timestamp(seconds=877561200, nanoseconds=0), mail=maria@gmail.com, pass=, nome=Maria Antonieta, id=marAnt999}}
daniel@gmail.com

So, I know that the username I am searching is in database, and I know that the data is being retrieved from database, but it keeps acting like it is not. 
Can anyone help me, please? 
Edit
This is my database structure. 

And this is how I defined utilizadores. 
  DocumentReference utilizadores = db.collection("Domum").document("Utilizador");

A:

To check the existens of a user according to the structure of your database, you simply need to use contains() method, on the Map object that is returned by document.getData().  So in code should look like this:
utilizadores.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Map<String, Object> map = document.getData();
                if (map.containsKey("daniel@gmail.com")) {
                    Log.d(TAG, "User exists!"); 
                } else {
                    Log.d(TAG, "User does not exist!"); 
                }
            } else {
                Log.d(TAG, "No such document");
            }
        }
    }
});

If you need to get data in realtime, then you should use addSnapshotListener(), in the same way as above.