Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

$search

이 페이지의 내용

  • 구문
  • 필드
  • 행동
  • 집계 변수
  • 문제 해결
$search

$search 단계는 지정된 필드에서 전체 텍스트 검색을 수행합니다. 해당 필드는 Atlas Search 인덱스로 커버되어야 합니다.

$search 파이프라인 단계의 프로토타입 형식은 다음과 같습니다.

{
$search: {
"index": "<index-name>",
"<operator-name>"|"<collector-name>": {
<operator-specification>|<collector-specification>
},
"highlight": {
<highlight-options>
},
"concurrent": true | false,
"count": {
<count-options>
},
"searchAfter"|"searchBefore": "<encoded-token>",
"scoreDetails": true| false,
"sort": {
<fields-to-sort>: 1 | -1
},
"returnStoredSource": true | false,
"tracking": {
<tracking-option>
}
}
}

$search 단계에서는 다음 필드가 있는 문서를 사용합니다.

필드
유형
필요성
설명
<collector-name>
객체
조건부
쿼리에 사용할 컬렉터의 이름입니다. 이 필드의 값으로 콜렉터별 옵션이 포함된 문서를 제공할 수 있습니다. 이 값 또는 <operator-name>가 필요합니다.
concurrent
부울
옵션
전용 검색 노드에서 여러 세그먼트에 걸쳐 검색을 병렬화하세요. 클러스터에 별도의 검색 노드가 없으면 Atlas Search는 이 플래그를 무시합니다. 생략하면 기본값은 false입니다. 자세한 사항은 세그먼트간 쿼리 실행 병렬 처리를 참조하십시오.
count
객체
옵션
결과의 개수를 검색하기 위한 수량 옵션을 지정하는 문서입니다. 자세한 내용은 Atlas Search 결과 수량을 참조하세요.
highlight
객체
옵션
검색어를 원래 문맥에 맞게 표시하기 위한 강조 표시 옵션을 지정하는 문서입니다.
index
문자열
옵션

사용할 Atlas Search 인덱스의 이름입니다. 생략하면 기본값은 default입니다.

인덱스 이름을 default로 지정하면 $search 파이프라인 단계에서 index 매개변수를 지정할 필요가 없습니다. 인덱스에 사용자 지정 이름을 지정하는 경우 index 매개변수에 이 이름을 지정해야 합니다.

인덱스 이름의 철자가 틀렸거나 지정된 인덱스가 클러스터에 존재하지 않는 경우 Atlas Search는 결과를 반환하지 않습니다.

<operator-name>
객체
조건부
검색할 연산자의 이름입니다. 이 필드의 값으로 연산자별 옵션이 포함된 문서를 제공할 수 있습니다. 이 값 또는 <collector-name>가 필요합니다. 복합 연산자를 사용하여 여러 연산자가 포함된 복합 쿼리를 실행하려면 복합 연산자를 사용합니다.
returnStoredSource
부울
옵션
백엔드 데이터베이스에서 전체 문서 조회를 수행할지, 아니면 Atlas Search에서 직접 저장된 소스 필드만 반환할지를 지정하는 플래그입니다. 생략하면 기본값은 false입니다. 자세한 사항은 Return Stored Source Fields 항목을 참조하십시오.
searchAfter
문자열
옵션
결과 조회를 위한 기준점입니다. searchAfter(은)는 지정된 기준점 바로 다음에 시작하는 문서를 반환합니다. 기준점은 $meta 키워드 searchSequenceToken(으)로 생성된 Base64인코딩 토큰이어야 합니다. 자세한 내용은 결과 페이지 매김을 참조하세요. 이 필드는 searchBefore 필드와 상호 배타적입니다.
searchBefore
문자열
옵션
결과 조회를 위한 기준점입니다. searchBefore는 지정된 기준점 바로 앞에서 시작하는 문서를 반환합니다. 기준점은 $meta 키워드 searchSequenceToken(으)로 생성된 Base64인코딩 토큰이어야 합니다. 자세한 내용은 결과 페이지 매김을 참조하세요. 이 필드는 searchAfter 필드와 상호 배타적입니다.
scoreDetails
부울
옵션
결과에서 문서에 대한 자세한 점수 분석을 검색할지 여부를 지정하는 플래그입니다. 생략하면 기본값은 false입니다. 세부 정보를 보려면 $project 단계에서 $meta 표현식을 사용해야 합니다. 자세한 내용은 점수 상세 정보 반환을 참조하세요.
sort
객체
옵션
Atlas Search 결과를 오름차순 또는 내림차순으로 정렬하기 위한 필드를 지정하는 문서입니다. 날짜, 숫자(정수, 실수, double 값), 문자열 값을 기준으로 정렬할 수 있습니다. 자세히 알아보려면 Atlas Search 결과 정렬을 참조하세요.
tracking
객체
옵션
검색어에 대한 분석 정보를 검색하기 위한 추적 옵션을 지정하는 문서입니다.

$search는 표시되는 모든 파이프라인의 첫 번째 단계여야 합니다. $search는 다음에서 사용할 수 없습니다.

  • 보기 정의

  • $facet 파이프라인 단계

$search는 쿼리 결과만 반환합니다. $search 쿼리의 메타데이터 결과는 $$SEARCH_META 집계 변수에 저장됩니다. $$SEARCH_META 변수를 사용하여 $search 쿼리에 대한 메타데이터 결과를 볼 수 있습니다.

$$SEARCH_META 집계 변수를 파이프라인의 $search 단계 이후에는 어디서나 사용할 수 있지만, $lookup 또는 $unionWith 단계 이후에는 사용할 수 없습니다. MongoDB 6.0부터는 $searchMeta 단계 이후의 모든 후속 단계에서 $$SEARCH_META 변수를 사용할 수 없습니다.

예시

sample_mflix.movies collection에 대한 다음 인덱스를 가정합니다.

{
"mappings": {
"dynamic": false,
"fields": {
"released": {
"type": "date"
}
}
}
}

다음 쿼리는 2011년 9월 01일 경에 개봉된 영화를 $search 단계를 사용해 검색합니다. 쿼리에는 다음이 포함됩니다.

  • $project 단계에서 titlereleased를 제외하고 문서의 모든 필드를 제외합니다.

  • $facet 단계에서는 다음을 출력합니다.

    • docs 상위 5개의 검색 결과 배열이 있는 $facet 필드

    • meta $$SEARCH_META 변수 값이 있는 필드

db.movies.aggregate([
{
"$search": {
"near": {
"path": "released",
"origin": ISODate("2011-09-01T00:00:00.000+00:00"),
"pivot": 7776000000
}
}
},
{
$project: {
"_id": 0,
"title": 1,
"released": 1
}
},
{ "$limit": 5 },
{
"$facet": {
"docs": [],
"meta": [
{"$replaceWith": "$$SEARCH_META"},
{"$limit": 1}
]
}
}
])
{
"docs" : [
{
"title" : "Submarino",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Devil's Playground",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Bag It",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "Dos",
"released" : ISODate("2011-09-01T00:00:00Z")
},
{
"title" : "We Were Here",
"released" : ISODate("2011-09-01T00:00:00Z")
}
],
"meta" : [
{ "count" : { "lowerBound" : NumberLong(17373) } }
]
}

$$SEARCH_META 변수 및 그 사용법에 대해 자세히 알아보려면 다음을 참조하세요.

Atlas Search $search 쿼리에 문제가 있는 경우 Atlas Search 오류 문제 해결을 참조하세요.

돌아가기

1. 집계 파이프라인 단계 선택