개요
이 가이드 에서는 PyMongo 애플리케이션에서 MongoDB Search 인덱스 쿼리 하고 고급 전체 텍스트 검색 기능을 사용하는 방법을 학습 수 있습니다. $search 집계 파이프라인 단계를 사용하여 검색 인덱스 쿼리 할 수 있습니다.
$search 파이프라인 단계에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 $search 가이드를 참조하세요.
참고
Atlas for MongoDB v4.2 이상에서만 사용 가능
$search 집계 파이프라인 연산자 MongoDB 4.2 Search 인덱스 가 적용되는 MongoDB v 이상을 실행 MongoDB Atlas 클러스터에서 호스팅되는 컬렉션에만 사용할 수 있습니다. 이 연산자 의 필수 설정 및 기능에 대해 자세히 학습 MongoDB Search 설명서를 참조하세요.
샘플 데이터
이 sample_mflix.movies 가이드의 예시에서는 Atlas 샘플 데이터 세트 컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 PyMongo 시작하기를 참조하세요.
MongoDB Search 인덱스 생성
Atlas 컬렉션 에서 검색 수행하려면 먼저 컬렉션 에 MongoDB Search 인덱스 만들어야 합니다. MongoDB Search 인덱스 는 데이터를 검색 가능한 형식으로 분류하는 데이터 구조입니다. MongoDB Search 인덱스 만드는 방법을 학습 MongoDB Search 및 Vector Search 인덱스를 참조하세요.
데이터 검색
$search 집계 파이프라인 단계를 사용하려면 실행 쿼리 유형을 나타내는 MongoDB Search 쿼리 연산자 지정해야 합니다. 선택적으로 값이나 범위별로 결과를 그룹화하는 수집기를 지정할 수도 있습니다. MongoDB Search에서 사용할 수 있는 모든 연산자 및 수집기의 표를 보려면 MongoDB Search 쿼리에서 연산자 및 수집기 사용을 참조하세요.
다음 예시에서는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. compound 연산자에 대해 자세히 알아보려면 MongoDB Atlas 문서의 복합 연산자 가이드를 참조하세요.
쿼리에 다음 검색 기준이 있습니다.
genres필드에Comedy가 포함되어서는 안 됩니다.title필드에 문자열New York이 포함되어야 합니다.
쿼리에는 다음 단계도 포함됩니다.
client = pymongo.MongoClient("<connection-string>") result = client["sample_mflix"]["movies"].aggregate([ { "$search": { "index": "pymongoindex", "compound": { "mustNot": [ { "text": { "query": [ "Comedy" ], "path": "genres" } } ], "must": [ { "text": { "query": [ "New York" ], "path": "title" } } ], } } }, { "$limit": 10 }, { "$project": { "_id": 0, "title": 1, "score": { "$meta": "searchScore" } } } ]) for i in result: print(i)
{'title': 'New York, New York', 'score': 6.786379814147949} {'title': 'New York', 'score': 6.258603096008301} {'title': 'New York Doll', 'score': 5.381444931030273} {'title': 'Escape from New York', 'score': 4.719935417175293} {'title': 'Autumn in New York', 'score': 4.719935417175293} {'title': 'Sleepless in New York', 'score': 4.719935417175293} {'title': 'Gangs of New York', 'score': 4.719935417175293} {'title': 'Sherlock Holmes in New York', 'score': 4.203253746032715} {'title': 'New York: A Documentary Film', 'score': 4.203253746032715} {'title': 'An Englishman in New York', 'score': 4.203253746032715}
추가 정보
사용 가능한 MongoDB Search 연산자에 대해 자세히 학습 MongoDB Atlas 문서에서 연산자 및 수집기 가이드 참조하세요.
MongoDB Search에 대한 자세한 내용과 더 많은 쿼리 예제를 보려면 MongoDB Search 설명서를 참조하세요.
Atlas 에 저장된 데이터에 대해 벡터 검색을 수행하려면 MongoDB Vector Search를 사용해야 합니다. MongoDB Vector Search에 대해 자세히 학습 MongoDB Vector Search 문서를 참조하세요.