오늘은 android studio와 firebase의 firestore에 저장된 데이터를 불러와 필터링 거는법을 공부했다.
먼저 firestore에는 camps컬렉션안에 데이터들이 들어가있고, 각각의 document에 대해서 field값과 value값이 저장되어있다.
value값은 string값으로 저장되어있는 field도 있고, list로 저장되어있는 field도 있다.
var baseQuery: Query = db.collection("camps")
baseQuery.whereIn("doNm", listOf("경기", "강원"))
이렇게 string값으로 저장되어있는 value들은 whereIn을 사용해서 찾을 수 있다.
그리고 list로 저장되어있는 value들은 whereArratContains를 사용할 수 있다.
var baseQuery: Query = db.collection("camps")
var asdf = baseQuery.whereArrayContains("induty", "카라반")
induty field는 리스트로 저장되어있고, 이 리스트에 값이 "카라반"인 애들을 가져와 사용할수 있다.
조금더 나아가 whereEqualTo를 사용해서 이중으로 검색을 할 수도 있다.
var asdf = baseQuery.whereArrayContains("induty", "카라반").whereEqualTo("doNm", "강원도")
이렇게 사용하면 induty리스트에 카라반이 포함되면서 doNm이 강원도인 데이터들을 불러와줄 수 있다.
여기서 whereArrayContains와 whereEqualTo는 중복해서 사용이 안된다. 뒤에 .whereEqualTo를 사용해서 이어붙이면 코드상으로는 오류가 안나지만 실제로는 데이터가 가져와지지 않는다.! 중복사용을 하려면 whereIn을 사용해줘야한다.
firebase
firestore