개요
이 가이드 에서는 MongoDB 검색 기능 사용하여 문서에서 검색을 수행하는 방법을 학습 수 있습니다. PHP 라이브러리를 사용하면 애그리게이션 빌더를 사용하여 MongoDB Search 쿼리를 수행할 수 있습니다.
MongoDB Search에 대해 자세히 학습 MongoDB Search 개요를 참조하세요. PHP 라이브러리에 대한 MongoDB Search 구현 내부적으로 $search 집계 연산자 사용하여 쿼리를 수행합니다. 이 연산자 에 대해 자세히 학습 Atlas 설명서에서 $ 검색 참조를 확인하세요.
참고
MongoDB Vector Search
MongoDB 에서 벡터 임베딩에 대한 검색을 수행하려면 MongoDB Vector Search API 사용할 수 있습니다. 이 기능 에 대해 학습 MongoDB 벡터 검색 쿼리 실행 가이드 참조하세요.
MongoDB 검색 인덱스
MongoDB Search 쿼리를 수행하려면 먼저 컬렉션 에 MongoDB Search 인덱스 만들어야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습 MongoDB 검색 인덱스 가이드 참조하세요.
검색 집계 단계
애그리게이션 빌더를 사용하여 MongoDB Search 쿼리를 수행하려면 다음 클래스를 애플리케이션 으로 가져옵니다.
use MongoDB\Builder\Search; use MongoDB\Builder\Stage;
집계 파이프라인 에서 $search 단계를 만들려면 다음 작업을 수행합니다.
파이프라인 단계를 저장 배열 만듭니다.
Stage::search()메서드를 호출하여 MongoDB Search 단계를 생성합니다.search()메서드의 본문에서Search빌더 클래스의 메서드를 사용하여 검색 쿼리 기준을 구성합니다.
다음 코드는 기본 MongoDB Search 쿼리를 구성하기 위한 템플릿을 보여줍니다.
$pipeline = [ Stage::search( /* MongoDB Search query specifications Search::compound(...) */ ), ];
MongoDB 검색 쿼리 예시
이 섹션에서는 애그리게이션 빌더를 사용하여 다양한 유형의 MongoDB Search 쿼리를 수행하는 방법에 대해 학습 수 있습니다. 이 섹션의 예제에서는 sample_restaurants.restaurants 컬렉션 의 샘플 데이터를 사용합니다.
필터가 포함된 복합 쿼리
두 개 이상의 연산자를 단일 쿼리로 결합하려면 Search::compound() 메서드를 사용합니다. 이 메서드는 must 및 filter와 같은 절에 대해 명명된 인수를 사용합니다. 각 절에서 Search::text() 메서드를 사용해 전체 텍스트 검색을 수행할 때 찾을 문자열을 지정합니다.
이 예시 다음과 같은 사양의 MongoDB Search 쿼리 수행합니다.
must절이 포함되어name필드에서 string"kitchen"를 검색합니다.cuisine필드에"american"가 포함된 문서를 높은 순위로 평가하기 위한should절을 포함합니다filter필드를 포함하여borough값이"Queens"인 문서만 결과에 포함합니다.
$pipeline = [ Stage::search( Search::compound( must: [ Search::text( query: 'kitchen', path: 'name', ), ], should: [ Search::text( query: 'american', path: 'cuisine', ), ], filter: [ Search::text( query: 'Queens', path: 'borough', ), ], ), ), Stage::project( borough: 1, cuisine: 1, name: 1, ), Stage::limit(3), ]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"_id":...,"borough":"Queens","cuisine":"American","name":"Kitchen Door"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Cc Kitchen"} {"_id":...,"borough":"Queens","cuisine":"American","name":"Suite Kitchen"} // Results truncated
자동 완성 쿼리
PHP 라이브러리는 컬렉션의 문서에서 자동 완성 검색을 실행하는 Search::autocomplete() 메서드를 제공합니다.
이 유형의 MongoDB Search 쿼리 에 대해 자세히 학습 Atlas 문서에서 자동 완성 참조를 확인하세요.
참고
쿼리 자동 완성을 위해 MongoDB Search 인덱스 구성해야 합니다. 자세히 학습 Atlas 설명서에서 자동 완성을 위한 필드 인덱싱 방법을 참조하세요.
다음 코드는 name 필드 의 문자열 "Lucy" 에 대해 MongoDB Search 자동 완성 쿼리 수행합니다.
$pipeline = [ Stage::search( Search::autocomplete( query: 'Lucy', path: 'name', ), ), Stage::limit(3), Stage::project(_id: 0, name: 1), ]; $cursor = $collection->aggregate($pipeline); foreach ($cursor as $doc) { echo json_encode($doc), PHP_EOL; }
{"name":"Juicy Lucy"} {"name":"Lucy'S Vietnamese Kitchen"} {"name":"Lucy'S Cantina Royale"} // Results Truncated
다음 선택 사항 매개변수를 autocomplete() 메서드에 전달하여 쿼리를 사용자 지정할 수도 있습니다.
선택적 매개변수 | 설명 | 기본값 |
|---|---|---|
| 퍼지 검색 및 퍼지 검색 옵션을 활성화합니다. |
|
| 토큰을 검색할 순서를 지정합니다 |
|
이러한 매개변수에 대한 자세한 내용은 Atlas 문서의 autocomplete 연산자 참조의 옵션 섹션을 참조하세요.
검색 옵션
search() 메서드를 사용하여 다양한 유형의 MongoDB Search 쿼리를 수행할 수 있습니다. 원하는 쿼리 에 따라 다음 선택적 매개변수를 search()에 전달할 수 있습니다.
선택적 매개변수 | 유형 | 설명 |
|---|---|---|
|
| 사용할 MongoDB Search 인덱스 의 이름을 제공합니다. |
|
| 검색어를 원래 문맥에 맞게 표시하기 위한 하이라이트 옵션 지정 |
|
| 전용 검색 노드에서 여러 세그먼트에 걸쳐 검색 쿼리 병렬화 |
|
| 결과의 개수를 검색하기 위한 수량 옵션 지정 |
|
| 문서를 반환하기 위해 해당 지점 바로 다음부터 시작하는 참조점 지정 |
|
| 문서를 반환하기 위해 해당 지점 바로 이전부터 시작하는 참조점 지정 |
|
| 결과에 대한 점수의 자세한 분석을 조회할지 여부 지정 |
|
| 결과를 정렬할 필드 지정 |
|
| 백엔드 데이터베이스 에서 전체 문서 조회를 수행할지, 아니면 MongoDB Search에서 직접 저장된 소스 필드만 반환할지를 지정합니다. |
|
| 검색어에 대한 분석 정보를 조회하기 위한 추적 옵션 지정 |
이러한 매개변수에 대해 자세히 $search 학습 Atlas 문서에서 연산자 참조의 필드 섹션을 참조하세요.