FireStore 'collectionGroup' 쿼리에 대해 기술합니다.
FireStore DB는 컬렉션과 서브컬렉션 구조로 이루어져있는데, 기존에는 서브컬렉션에 접근하기 위해서 루트 컬렉션부터 타고 들어가야하는데, collectionGroup 쿼리를 이용하면 컬렉션의 이름을 통해서 위치에 상관없이 접근 가능합니다.
- collectionGroup(컬렉션 이름)의 형태로 사용합니다.
- collectionGroup은 FireStore에서 기본값으로 쿼리가 비활성화 되어 있습니다. 따라서 필요한 쿼리 컬렉션 필드 색인을 수동으로 지정해주어야합니다.
- 단일 필드에 대한 색인과 복합 필드에 대한 색인이 분리되어있습니다.
- 복합 필드 쿼리를 사용하는 경우, 지정한 필드들이 모두 쿼리 내용에 포함되어야합니다. (필요없더라도)
- 복합 필드 쿼리에서 오름차순으로 지정된 경우, 오름차순'만' 가능합니다.
- 색인 설정은 설정 완료 후 약 2~3분 소요됩니다.
- 복합 쿼리 필드 지정 시 필드를 순서대로 설정하게 되는데, 정렬에 관련한 필드 순서를 아래로 두어야 쿼리 시 오류가 발생하지 않습니다. (이유 불명)
- SQL 작성 시 where절 -> order by 순서로 작성하는 것과 유사하게 생각하면 됩니다.
원태영, 정예슬