개요
이 가이드에서는 Atlas Search 인덱스를 쿼리하는 방법과 PyMongo 애플리케이션에서 고급 전체 텍스트 검색 기능을 활용하는 방법을 알아볼 수 있습니다. $search
집계 파이프라인 단계를 사용하여 검색 인덱스를 쿼리할 수 있습니다.
$search
파이프라인 단계에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 $search 가이드를 참조하세요.
참고
Atlas for MongoDB v4.2 이상에서만 사용 가능
$search
집계 파이프라인 연산자는 Atlas Search 인덱스가 적용되고 MongoDB v4.2 이상을 실행하는 MongoDB Atlas 클러스터에서 호스팅되는 컬렉션에만 사용할 수 있습니다. 이 연산자의 필수 설정 및 기능에 대한 자세한 내용은 Atlas Search 설명서를 참조하세요.
샘플 데이터
이 sample_mflix.movies
가이드의 예시에서는 Atlas 샘플 데이터 세트 컬렉션을 사용합니다. 무료 MongoDB Atlas 클러스터를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 PyMongo 시작하기를 참조하세요.
Atlas Search 인덱스 만들기
Atlas 컬렉션에서 검색을 수행하려면 먼저 컬렉션에 Atlas Search 인덱스를 만들어야 합니다. Atlas Search 인덱스는 데이터를 검색 가능한 형식으로 분류하는 데이터 구조입니다. Atlas Search 인덱스를 생성하는 방법은 Atlas Search 및 Vector Search 인덱스를 참조하세요.
데이터 검색
$search
집계 파이프라인 단계를 사용하려면, 실행할 쿼리 유형을 나타내는 Atlas Search 쿼리 연산자를 지정해야 합니다. 값 또는 범위별로 결과를 그룹화하는 수집기를 선택적으로 지정할 수도 있습니다. Atlas Search에서 사용할 수 있는 모든 연산자와 수집기가 포함된 표를 보려면 Atlas 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}
추가 정보
사용 가능한 Atlas Search 연산자에 대해 자세히 알아보려면 MongoDB Atlas 문서의 연산자 및 수집기 가이드를 참조하세요.
Atlas Search에 대한 자세한 정보와 더 많은 쿼리 예시를 보려면 Atlas Search 문서를 참조하세요.
Atlas에 저장된 데이터에서 벡터 검색을 수행하려면 Atlas Vector Search를 사용해야 합니다. Atlas Vector Search에 대해 자세히 알아보려면 Atlas Vector Search 문서를 참조하세요.