★★★★★
#데이터·Firebase·보안 · claude-code
Firestore Compound Query 한계 이해
여러 조건을 AND/OR로 조합할 때의 한계와 해결책.
#firestore#query#compound-query
변수 1개 — 여기 채우면 아래 프롬프트에 바로 들어가요
여러 조건을 AND/OR로 조합할 때의 한계와 해결책.
문제:
"성별 = 여성 AND 종교 = 기독교 AND 도시 ∈ [서울, 부산]"
❌ 불가능:
```dart
db.collection('users')
.where('gender', isEqualTo: 'female')
.where('religion', isEqualTo: 'christian')
.where('city', whereIn: ['Seoul', 'Busan'])
.get();
```
✓ 해결책 1 — 클라이언트 필터링 (작은 데이터):
```dart
final snap = await db
.collection('users')
.where('gender', isEqualTo: 'female')
.where('religion', isEqualTo: 'christian')
.get();
return snap.docs
.where((doc) => ['Seoul', 'Busan'].contains(doc['city']))
.map((doc) => User.fromDoc(doc))
.toList();
```
✓ 해결책 2 — 복합 필드 사용:
저장 시: `searchField = "female_christian_Seoul"`
쿼리: `.where('searchField', isEqualTo: 'female_christian_Seoul')`
✓ 해결책 3 — 여러 쿼리 후 교집합:
각 조건으로 별도 쿼리 → 클라이언트에서 교집합
{{QUERY_CONDITIONS}}에 맞춰 최적 방법 제안할까?
쓰는 법 — 위 칸에 본인 값을 채우면 아래 프롬프트에 바로 반영돼요. 복사 버튼을 누르면 채워진 그대로 클립보드에 담기니까, claude-code(또는 본인이 쓰는 AI)에 붙여넣기만 하면 됩니다. 변수가 없으면 그냥 복사해서 쓰세요.

