
MongoDB Atlas Search 정렬이슈 해결기
두줄요약
Atlas Search의 `$search` 후 `$sort` 지연 원인을 mongot·mongod 분리 구조로 분석했습니다. storedSource와 점수 기반 연산을 비교하고 고급 정렬 구현 방식을 적용했습니다.
문제 상황
- RDB
like연산과 동의어별 반복 조회로 인한 검색 슬로우 쿼리 - Atlas Search의
$search뒤$sort사용 시 전체 매칭 문서 조회·정렬로 4~5초 응답 지연
원인 분석
mongot의 전문 검색과mongod의 문서 조회·정렬로 분리된 처리 구조- 많은 검색 결과 ID에 대한
mongod조회 및 정렬 비용 증가
해결 방법
storedSource와returnStoredSource로 정렬 필드를 검색 인덱스에서 반환near와 score function으로mongot내부 점수 기반 정렬 수행compound의filter·must·should조합으로 검색 필터와 정렬 점수 분리
트레이드오프
storedSource의 빠른 조회 성능과 인덱스 크기·인덱싱 비용 증가near의 origin·pivot 설정 제약 및 2차 정렬 한계- score function과 constant 점수를 활용한 수업 질문 우선·최신순 고급 정렬




