2017-12-01 7 views
1

안드로이드에 firestore에서 가져 오는 내 문서 목록을 필터링해야합니다. app. 이것은 쿼리입니다.두 개의 다른 입력란에 대해 WhereGreaterthan() 필터를 사용하여 Android 용 Firestore 쿼리를 작성하려면 어떻게해야합니까?

query = FirebaseFirestore.getInstance() 
      .collection("students") 
      .whereLessThan("mAge",25) 
      .whereGreaterThan("mAge",20) 
      .whereGreaterThan("mGrades",20); 

는하지만, 내가 로그에 오류가 :

java.lang.RuntimeException가 : 활동 ComponentInfo {dsardy.in.acchebacche/dsardy.in.acchebacche.MainActivity}을 (를) 시작할 수 없습니다 : java.lang.IllegalArgumentException : whereEqualTo() 이외의 필터가 같은 필드에있을 필요가있는 모든 것 하지만 'mAge'와 'mGrades'필터가 있습니다

이 작업을 수행 할 수 있습니까? 두 개 이상의 필드가 일부 값보다 큰 필터는 중요하고 일반적인 쿼리이므로 firestore에는이 문제를 해결할 수있는 항목이 있어야합니다.

답변

1

Firestore는 여러 개의 where() 메소드를 연결하여 더 구체적인 쿼리를 만들 수 있지만 동일한 필드에서만 가능합니다. official documentation에서 볼 수 있듯이 다른 필드의 범위 필터는 금지되어 있습니다.

데이터베이스를 두 번 쿼리해야합니다. 예를 들어 .whereGreaterThan("mAge",20)을 사용하여 데이터를 연결하고 .whereGreaterThan("mGrades",20)을 사용하여 두 번째 데이터를 쿼리해야하지만 동일한 쿼리에서 사용할 수는 없습니다.

실제 응용 프로그램에서는 사용자가 데이터를 쿼리 할 수있는 모든 단일 방법을 저장하는 것이 거의 불가능하지만 쿼리를 적용 할 수있는 특수 필드를 저장하는 또 다른 방법이 있습니다.