Docs Menu

쿼리 참조

Atlas Search 쿼리는 집계 파이프라인 단계의 형태를 취합니다. Atlas Search$search$searchMeta단계를 제공하며, 이 두 단계는$lookup$unionWith하위 파이프라인을 포함한 모든 쿼리 파이프라인 에서 첫 번째 단계여야 합니다. 이러한 단계는 쿼리 파이프라인 의 다른 집계 파이프라인 단계 와 함께 사용할 수 있습니다.

선택한 파이프라인 단계에 따라 쿼리는 전체 텍스트 검색의 검색 결과 또는 검색 결과에 대한 메타데이터를 반환합니다.

집계 파이프라인 단계
목적

Full Text Search의 검색 결과를 반환합니다.

검색 결과에 대한 메타데이터를 반환합니다.

Atlas Search 또한 및 집계 파이프라인 $search 단계 내에서 사용할 수 있는 $searchMeta 쿼리 연산자수집기를 제공합니다. Atlas Search 연산자를 사용하면 Atlas cluster 의 컬렉션 에서 관련 데이터를 찾고 조회 수 있습니다. 수집기는 검색 메타데이터 결과를 나타내는 문서 반환합니다.

Atlas Search 연산자를 사용하여 용어, 구문, 지리적 도형 및 점, 숫자 값, 유사 문서, 동의어 등 쿼리 수 있습니다.

정규식 및 와일드카드 표현식을 사용하여 검색 할 수도 있습니다. Atlas Search 복합 연산자 사용하면 $search 단계 내에서 여러 연산자를 결합하여 복잡한 검색 수행하고, Atlas Search 에서 반환된 문서에 반드시 있어야 하는 항목, 없어야 하는 항목 또는 존재해야 하는 항목을 기준으로 데이터를 필터하다 . 복합 연산자 사용하여 $search 단계 자체에 있는 문서를 일치시키거나 필터하다 수도 있습니다. $search 다음에 $match 를 실행하는 것은 복합 연산자 사용하여 $search 를 실행 보다 성능이 떨어집니다.

연산자 및 수집기에 대해 자세히 학습 연산자 및 수집기를 참조하세요.

동일한 노드의 mongodmongot

쿼리를 실행할 때 Atlas Search는 구성된 읽기 기본 설정을 사용하여 쿼리를 실행할 노드를 식별합니다. 쿼리는 먼저 MongoDB 프로세스인 복제본 세트 클러스터의 경우 mongod, 샤딩된 클러스터의 경우 mongos 로 이동합니다.

복제본 세트 클러스터의 경우 MongoDB 프로세스는 쿼리를 동일한 노드의 mongot으로 라우팅합니다. 샤딩된 클러스터에서는 클러스터 데이터가 여러 mongod 인스턴스에 걸쳐 분할되며, 각 mongot은 동일한 노드에 있는 mongod의 데이터에 대해서만 알고 있습니다. 따라서 특정 샤드를 대상으로 하는 Atlas Search 쿼리를 실행할 수 없습니다. mongos는 쿼리를 모든 샤드로 전달하여 이러한 분산 수집 쿼리를 만듭니다. 구역을 사용하여 클러스터의 샤드 하위 집합에 샤딩된 컬렉션을 분산하는 경우, Atlas Search는 쿼리 중인 컬렉션의 샤드가 포함된 구역으로 쿼리를 라우팅하고 컬렉션이 있는 샤드에서만 $search 쿼리를 실행합니다.

Atlas Search는 검색 및 점수 산정을 수행하고 일치하는 결과에 대한 문서 ID 및 기타 검색 메타데이터를 mongod로 반환합니다. 그런 다음 mongod는 일치하는 결과에 대해 암시적으로 전체 문서 조회를 수행하여 결과를 클라이언트에 반환합니다. 쿼리에서 $search 동시 옵션을 사용하는 경우 Atlas Search는 쿼리 내 병렬 처리를 활성화합니다. 자세한 사항은 세그먼트간 쿼리 실행 병렬화를 참조하세요.

다른 노드의 mongodmongot

쿼리를 실행하면 구성된 읽기 설정에 따라 쿼리가 먼저 mongod로 이동합니다. mongod 프로세스는 동일한 노드의 로드 밸런서를 통해 검색 쿼리를 라우팅하며, 로드 밸런서는 mongot 프로세스 전체에 요청을 분산합니다.

Atlas Search mongot 프로세스는 검색 및 점수 산정을 수행하고 일치 결과에 대한 문서 ID와 메타데이터를 mongod로 반환합니다. 그런 다음 mongod는 일치하는 결과에 대한 전체 문서 조회를 수행하고 결과를 클라이언트에 반환합니다. 쿼리에서 $search 동시 옵션을 사용하는 경우 Atlas Search는 쿼리 내 병렬 처리를 활성화합니다. 자세한 내용은 세그먼트간 쿼리 실행 병렬 처리를 참조하세요.

Atlas Search는 결과 세트의 모든 문서에 관련성 기반 점수를 부여합니다. 관련성 기반 점수 매기기를 통해 Atlas Search는 가장 높은 점수에서 가장 낮은 점수 순서로 문서를 반환할 수 있습니다. Atlas Search는 쿼리어가 문서에 자주 나타나는 경우 문서 점수를 높이고 컬렉션의 여러 문서에 쿼리어가 나타나면 낮은 점수를 줍니다. Atlas Search는 또한 부스트, 감쇠(decaying) 또는 또는 기타 수정 옵션을 통해 관련성 기반의 기본 점수를 사용자 맞춤형으로 조정하는 것도 가능합니다. 결과 점수 사용자 지정에 대해 자세히 알아보려면 결과에서 문서 점수 매기기를 참조하세요.

참조 항목: 보면서 배우기

이 동영상에서 Atlas Search로 쿼리를 검색하고 추적하는 방법에 대한 개요를 확인하세요. 이 동영상에서는 Atlas Search 연산자에 대한 내용 및 결과에서 문서의 점수를 산정하는 방법에 대해 자세히 알아볼 수 있습니다.

지속 시간 소요 시간: 15분

다음 클라이언트를 사용하여 Atlas Search 쿼리를 만들고 실행 수 있습니다.

mongot 은(는) 오류를 반환하지 않지만 $search 쿼리가 다음과 같은 경우 빈 결과 집합을 반환합니다.

  • 존재하지 않는 인덱스 참조합니다. 쿼리 에서 이름으로 인덱스 지정하지 않으면 Atlas Search 기본적으로 이름이 default인 인덱스 사용합니다. default(이)라는 인덱스 없거나 지정한 인덱스 존재하지 않는 경우 Atlas Search 오류를 반환하지 않고 빈 결과 설정하다 반환합니다. index 옵션을 사용하여 이름으로 유효한 인덱스 지정할 수 있습니다.

  • 인덱싱되지 않은 필드를 지정합니다. 인덱싱되지 않은 필드에 대해 쿼리를 실행하는 경우 Atlas Search는 오류를 반환하지 않고 빈 결과 집합을 반환합니다. 인덱싱된 필드만 path 매개변수의 값으로 지정해야 합니다. collection에 대한 인덱스 정의에서 동적 매핑 을 활성화하여 collection의 모든 동적으로 인덱싱 가능한 필드 가 자동으로 인덱싱되도록 할 수 있습니다. 자세한 내용은 동적 매핑을 참조하세요.

  • string 유형으로 인덱싱되지 않은 필드 경로에 text 연산자를 사용합니다. 필드가 string 이외의 Atlas Search 필드 유형(예: stringFacet 또는 autocomplete)으로 인덱싱되는 경우 Atlas Search는 오류를 반환하지 않고 빈 결과 집합을 반환합니다. 텍스트 연산자를 사용하여 필드를 string 쿼리하려면 BSON 데이터 유형 값을 사용하여 필드를 문자열 유형으로 인덱싱 해야 합니다 .

mongot 은(는) $search 쿼리가 다음과 같은 경우 PlanExecutor 오류를 반환합니다.

  • 잘못된 데이터 유형으로 인덱싱되는 필드를 지정합니다. 이 경우 쿼리를 실행하면 Atlas Search는 잘못 인덱싱된 필드와 올바른 데이터 유형을 식별하는 오류 메시지를 반환합니다. 예를 들면 다음과 같습니다.

    PlanExecutor error during aggregation :: caused by :: Cannot facet on field "genres" because
    it was not indexed as a "stringFacet" field.

    예를 들어 string, number 또는 date 필드에 대해 패싯 쿼리를 실행하려면 stringFacet, numberdate 과 같은 해당 Atlas Search 필드 유형을 사용하여 필드에 대한 인덱스를 만듭니다. . 자세한 내용은 지원되는 데이터 유형과 지원되지 않는 데이터 유형을 참조하세요.