Docs Menu
Docs Home
/ /

MongoDB Search

이 가이드 에서는 MongoDB 검색 기능 사용하여 문서에서 검색을 수행하는 방법을 학습 수 있습니다. Laravel MongoDB 모델을 사용하여 직접 MongoDB Search 쿼리를 수행할 수 있는 API 제공합니다. 이 가이드는 MongoDB 검색 인덱스를 생성하는 방법을 설명하고 Laravel 통합을 사용하여 검색을 수행하는 방법의 예시를 제공합니다.

참고

배포 호환성

MongoDB Atlas 클러스터에 연결해야만 MongoDB 검색 기능을 사용할 수 있습니다. 자체 관리형 배포서버에서는 이 기능을 사용할 수 없습니다.

MongoDB 검색에 대해 더 알아보려면 Atlas 문서의 개요를 참조하세요. MongoDB 검색 API는 내부적으로 $search 집계 연산자를 사용하여 쿼리를 수행합니다. 이 연산자에 대한 자세한 내용은 Atlas 문서의 $search 참조를 확인하세요.

참고

모든 유형의 MongoDB Search 쿼리 에 대해 이 가이드 에 설명된 메서드를 사용하지 못할 수도 있습니다. 더 복잡한 사용 사례의 경우 집계 빌더를 사용하여 집계 파이프라인 만듭니다.

MongoDB 에서 벡터 임베딩에 대한 검색을 수행하려면 Laravel MongoDB MongoDB Vector Search API 사용할 수 있습니다. 이 기능 에 대해 학습 MongoDB Vector Search 가이드 참조하세요.

MongoDB 검색 인덱스를 다음 방법 중 하나로 생성할 수 있습니다.

  • Schema 파사드에서 create() 메서드를 호출하고, 인덱스 생성 세부 정보와 함께 searchIndex() 헬퍼 메서드를 전달합니다. 이 전략에 대해 자세히 알아보려면 스키마 빌더 가이드의 MongoDB 검색 및 MongoDB 벡터 검색 인덱스 관리 섹션을 참조하세요.

  • 컬렉션에 액세스한 후 다음 코드에 표시된 대로 MongoDB PHP 라이브러리에서 createSearchIndex() 메서드를 호출하세요.

    $collection = DB::connection('mongodb')->getCollection('movies');
    $collection->createSearchIndex(
    ['mappings' => ['dynamic' => true]],
    ['name' => 'search_index']
    );

중요

비동기 검색 인덱스 작업

MongoDB Search 인덱스를 생성하고 제거 작업은 비동기적으로 실행 . 따라서 동일한 네임스페이스 에 있는 동일한 이름의 인덱스 삭제되는 동안에는 새 MongoDB Search 인덱스 생성할 수 없습니다. createSearchIndex() 메서드를 호출하기 전에 MongoDB 충돌하는 인덱스 삭제할 때까지 기다려야 합니다.

또한 인덱스를 사용하기 전에 인덱스 쿼리할 수 있을 때까지 기다려야 합니다. 인덱스 쿼리 가능한지 확인하려면 메서드를 실행 Collection::listSearchIndexes() 메서드 출력에서 새 인덱스 설명하는 문서 찾은 다음 필드 queryable 값을 확인합니다. 인덱스 생성 후 추가된 문서는 쿼리 결과에서 즉시 사용할 수 없습니다.

이 섹션에서는 Laravel 통합에서 MongoDB Search API 사용하는 방법을 학습 수 있습니다.

Laravel 통합은 search() 메서드를 쿼리 빌더 메서드 및 Eloquent 모델 메서드로 제공합니다. search() 메서드를 사용하여 컬렉션의 문서에 대해 MongoDB Search 쿼리를 실행 수 있습니다.

search() 메서드에 SearchOperatorInterface의 인스턴스 또는 연산자 유형, 필드 이름 및 쿼리 값을 포함하는 배열인 operator 매개 변수를 전달해야 합니다. Search::text() 메서드를 호출하고 쿼리할 필드와 검색어 또는 구문을 전달하여 SearchOperatorInterface 인스턴스를 생성할 수 있습니다.

SearchOperatorInterface 인스턴스를 생성하려면 애플리케이션에 다음 import 문을 포함해야 합니다.

use MongoDB\Builder\Search;

다음 코드는 Movie 모델의 title 필드 에서 텀 'dream'에 대해 MongoDB Search 쿼리 수행합니다.

$movies = Movie::search(
sort: ['title' => 1],
operator: Search::text('title', 'dream'),
)->all();
[
{ "title": "Dreaming of Jakarta",
"year": 1990
},
{ "title": "See You in My Dreams",
"year": 1996
}
]

search() 메서드를 사용하여 다양한 유형의 MongoDB 검색 쿼리를 수행할 수 있습니다. 원하는 쿼리에 따라 다음 선택 사항 매개변수를 search()에 전달할 수 있습니다.

선택적 매개변수
유형
설명

index

string

사용할 MongoDB Search 인덱스 의 이름을 제공합니다.

highlight

array

검색어를 원래 문맥에 맞게 표시하기 위한 하이라이트 옵션 지정

concurrent

bool

전용 검색 노드에서 여러 세그먼트에 걸쳐 검색 쿼리 병렬화

count

string

결과의 개수를 검색하기 위한 수량 옵션 지정

searchAfter

string

문서를 반환하기 위해 해당 지점 바로 다음부터 시작하는 참조점 지정

searchBefore

string

문서를 반환하기 위해 해당 지점 바로 이전부터 시작하는 참조점 지정

scoreDetails

bool

결과에 대한 점수의 자세한 분석을 조회할지 여부 지정

sort

array

결과를 정렬할 필드 지정

returnStoredSource

bool

백엔드 데이터베이스에서 전체 문서 조회를 수행할지, 아니면 MongoDB 검색에서 직접 저장된 소스 필드만 반환할지를 지정합니다.

tracking

array

검색어에 대한 분석 정보를 조회하기 위한 추적 옵션 지정

이러한 매개변수에 대해 자세히 $search 학습 Atlas 문서에서 연산자 참조의 필드 섹션을 참조하세요.

Laravel 통합은 autocomplete() 메서드를 쿼리 빌더 메서드 및 Eloquent 모델 메서드로 제공합니다. autocomplete() 메서드를 사용하여 컬렉션의 문서에 대해 자동 완성 검색을 실행할 수 있습니다. 이 메서드는 쿼리 경로로 지정한 필드의 값만 반환합니다.

이 유형의 MongoDB Search 쿼리에 대해 자세히 학습하려면 Atlas 문서에서 자동 완성 참조를 확인하세요.

참고

자동 완성 검색을 수행하려면 먼저 컬렉션 에 자동 완성 구성을 사용하여 MongoDB Search 인덱스 만들어야 합니다. 검색 인덱스 생성에 대해 자세히 학습 이 가이드 의 MongoDB 검색 인덱스 생성 섹션을 참조하세요.

다음 코드는 title 필드 의 string "jak" 에 대해 MongoDB Search 자동 완성 쿼리를 수행합니다.

$movies = Movie::autocomplete('title', 'jak')->all();
[
"Dreaming of Jakarta",
"Jakob the Liar",
"Emily Calling Jake"
]

다음 선택 사항 매개변수를 autocomplete() 메서드에 전달하여 쿼리를 사용자 지정할 수도 있습니다.

선택적 매개변수
유형
설명
기본값

fuzzy

bool or array

퍼지 검색 및 퍼지 검색 옵션을 활성화합니다.

false

tokenOrder

string

토큰을 검색할 순서를 지정합니다

'any'

이러한 매개변수에 대한 자세한 내용은 Atlas 문서의 autocomplete 연산자 참조의 옵션 섹션을 참조하세요.

돌아가기

집계 빌더

이 페이지의 내용