Docs Menu
Docs Home
/ /

MongoDB 검색 쿼리 실행

이 가이드 에서는 MongoDB 검색 기능 사용하여 문서에서 검색을 수행하는 방법을 학습 수 있습니다. PHP 라이브러리를 사용하면 애그리게이션 빌더를 사용하여 MongoDB Search 쿼리를 수행할 수 있습니다.

MongoDB Search에 대해 자세히 학습 MongoDB Search 개요를 참조하세요. PHP 라이브러리에 대한 MongoDB Search 구현 내부적으로 $search 집계 연산자 사용하여 쿼리를 수행합니다. 이 연산자 에 대해 자세히 학습 Atlas 설명서에서 $ 검색 참조를 확인하세요.

참고

MongoDB Vector Search

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

MongoDB Search 쿼리를 수행하려면 먼저 컬렉션 에 MongoDB Search 인덱스 만들어야 합니다. 이 인덱스 유형을 만드는 방법에 대해 자세히 학습 MongoDB 검색 인덱스 가이드 참조하세요.

애그리게이션 빌더를 사용하여 MongoDB Search 쿼리를 수행하려면 다음 클래스를 애플리케이션 으로 가져옵니다.

use MongoDB\Builder\Search;
use MongoDB\Builder\Stage;

집계 파이프라인 에서 $search 단계를 만들려면 다음 작업을 수행합니다.

  1. 파이프라인 단계를 저장 배열 만듭니다.

  2. Stage::search() 메서드를 호출하여 MongoDB Search 단계를 생성합니다.

  3. search() 메서드의 본문에서 Search 빌더 클래스의 메서드를 사용하여 검색 쿼리 기준을 구성합니다.

다음 코드는 기본 MongoDB Search 쿼리를 구성하기 위한 템플릿을 보여줍니다.

$pipeline = [
Stage::search(
/* MongoDB Search query specifications
Search::compound(...) */
),
];

이 섹션에서는 애그리게이션 빌더를 사용하여 다양한 유형의 MongoDB Search 쿼리를 수행하는 방법에 대해 학습 수 있습니다. 이 섹션의 예제에서는 sample_restaurants.restaurants 컬렉션 의 샘플 데이터를 사용합니다.

두 개 이상의 연산자를 단일 쿼리로 결합하려면 Search::compound() 메서드를 사용합니다. 이 메서드는 mustfilter와 같은 절에 대해 명명된 인수를 사용합니다. 각 절에서 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() 메서드에 전달하여 쿼리를 사용자 지정할 수도 있습니다.

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

fuzzy

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

false

tokenOrder

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

'any'

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

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

선택적 매개변수
유형
설명

index

string

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

highlight

array

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

concurrent

bool

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

count

string

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

searchAfter

string

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

searchBefore

string

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

scoreDetails

bool

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

sort

array

결과를 정렬할 필드 지정

returnStoredSource

bool

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

tracking

array

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

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

돌아가기

데이터베이스 명령 실행

이 페이지의 내용