Вот моя таблица (все значения имеют строковый тип, 'subject' - массив):
Я пытаюсь:
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 составной запрос с <= &> = Как я использую неравенство на одном поле. Я получаю эту ошибку: «Для запроса требуется индекс ...»