Сложный запрос не дает правильных результатов [Firestore] - PullRequest
0 голосов
/ 09 марта 2020

Вот моя таблица (все значения имеют строковый тип, 'subject' - массив):

enter image description here

Я пытаюсь:

  FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
  Query q = rootRef.collection("users");


  q = q.whereArrayContains("subjects", "Science").
           whereEqualTo("qualification","0").
               whereEqualTo("gender", "Male").
                  whereLessThanOrEqualTo("fee", "300");

  q.get().addOnCompleteListener(task -> {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {

                        Log.d("LogHeree ", "here " + document.get("name"));

                }
            }
        });

Он ничего не возвращает.

Я пытался:

 q = q.whereArrayContains("subjects", "Science").
               whereEqualTo("qualification","0").
                   whereEqualTo("gender", "Male");

Этот (приведенный выше запрос) дает правильные результаты.

Также:

 q = q.whereLessThanOrEqualTo("fee", "300");

Этот (приведенный выше запрос) также дает правильные результаты. Очевидно, что запрос работает нормально, когда запускается отдельно. Итак, что я делаю здесь не так или почему это не работает в сочетании?

PS Не дубликат: Firestore составной запрос с <= &> = Как я использую неравенство на одном поле. Я получаю эту ошибку: «Для запроса требуется индекс ...»

1 Ответ

1 голос
/ 09 марта 2020

Я думаю, что вы написали неправильное имя коллекции:

Измените это:

Query q = rootRef.collection("users");

На это:

Query q = rootRef.collection("Users");
...