문서 홈 → MongoDB 실행 및 관리 → MongoDB Atlas
구
정의
구문
phrase
의 구문은 다음과 같습니다:
1 { 2 $search: { 3 "index": <index name>, // optional, defaults to "default" 4 "phrase": { 5 "query": "<search-string>", 6 "path": "<field-to-search>", 7 "score": <options>, 8 "slop": <distance-number> 9 } 10 } 11 }
옵션
phrase
는 다음 용어를 사용하여 쿼리를 구성합니다:
필드 | 유형 | 설명 | 필요성 |
---|---|---|---|
query | 문자열 또는 문자열 배열 | 검색할 문자열 또는 문자열을 입력합니다. | 네 |
path | 문자열 또는 문자열 배열 | 네 | |
slop | integer | query 구문에서 단어 간 허용 거리입니다. 값이 낮을수록 단어 사이의 위치 거리가 짧아지고 값이 클수록 단어를 더 많이 재구성하고 단어 사이의 거리를 늘려 쿼리를 충족할 수 있습니다. 기본값은 0 입니다. 즉, 일치하는 단어로 간주되려면 단어가 쿼리와 정확히 같은 위치에 있어야 합니다. 정확히 일치하는 항목이 더 높은 점수를 받습니다. | 아니 |
score | 객체 | 일치하는 검색어 결과에 할당할 점수입니다. 다음 옵션을 사용하여 기본 점수를 수정할 수 있습니다.
기본 점수를 수정하는 옵션에 대한 자세한 내용은 결과에서 문서 점수 매기기를 참조하세요. 참고배열에서 값을 쿼리할 때, Atlas Search는 배열 내 쿼리와 일치하는 값의 개수에 따라 일치하는 결과의 점수를 수정하지 않습니다. 점수는 배열 내부의 일치 항목 수에 관계없이 단일 일치 항목과 동일합니다. | 아니 |
예제
다음 예제에서는 sample_mflix
데이터베이스의 movies
컬렉션을 사용합니다. 클러스터에 샘플 데이터 세트가 있는 경우 title
필드에 인덱스를 생성하고 클러스터에서 예제 쿼리를 실행할 수 있습니다.
팁
샘플 데이터 집합을 이미 로드한 경우, Atlas Search 시작하기 자습서에 따라 인덱스 정의를 만들고 Atlas Search 쿼리를 실행하세요.
단일 문구 예
다음 Atlas Search 예제에서는 title
필드에서 쿼리 문자열 new york
에 대한 기본 검색을 수행합니다. 쿼리에 slop
이 없으므로 slop
값의 기본값은 0
이며, 이는 단어의 위치가 쿼리 문자열과 정확히 일치해야 결과에 포함될 수 있음을 의미합니다. 쿼리에는 다음도 포함됩니다.
예제
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": "new york" 7 } 8 } 9 }, 10 { $limit: 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
위의 쿼리는 다음과 같은 결과를 반환합니다:
1 { "title" : "New York, New York", "score" : 6.75715970993042 } 2 { "title" : "New York", "score" : 6.231321334838867 } 3 { "title" : "New York Stories", "score" : 5.358973026275635 } 4 { "title" : "New York Minute", "score" : 5.358973026275635 } 5 { "title" : "Synecdoche, New York", "score" : 5.358973026275635 } 6 { "title" : "New York Doll", "score" : 5.358973026275635 } 7 { "title" : "Little New York", "score" : 5.358973026275635 } 8 { "title" : "Escape from New York", "score" : 4.700878143310547 } 9 { "title" : "King of New York", "score" : 4.700878143310547 } 10 { "title" : "Naked in New York", "score" : 4.700878143310547 }
여러 구문 예제
다음 Atlas Search 예제에서는 title
필드에서 쿼리 문자열 the man
및 the
moon
에 대한 기본 검색을 수행합니다. 쿼리에 slop
이 없으므로 slop
값의 기본값은 0
이며, 이는 단어의 위치가 쿼리 문자열과 정확히 일치해야 결과에 포함될 수 있음을 의미합니다. 쿼리에는 다음도 포함됩니다.
예제
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": ["the man", "the moon"] 7 } 8 } 9 }, 10 { $limit: 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
위의 쿼리는 다음과 같은 결과를 반환합니다:
1 { "title" : "The Man in the Moon", "score" : 4.500046730041504 } 2 { "title" : "Shoot the Moon", "score" : 3.278003215789795 } 3 { "title" : "Kick the Moon", "score" : 3.278003215789795 } 4 { "title" : "The Man", "score" : 2.8860299587249756 } 5 { "title" : "The Moon and Sixpence", "score" : 2.8754563331604004 } 6 { "title" : "The Moon Is Blue", "score" : 2.8754563331604004 } 7 { "title" : "Racing with the Moon", "score" : 2.8754563331604004 } 8 { "title" : "Mountains of the Moon", "score" : 2.8754563331604004 } 9 { "title" : "Man on the Moon", "score" : 2.8754563331604004 } 10 { "title" : "Castaway on the Moon", "score" : 2.8754563331604004 }
Slop 예시
다음 Atlas Search 예시에서는 title
필드에서 쿼리 문자열 men women
을 검색합니다. slop
에서 5
의 query
값은 men
와 women
단어의 이동과 단어 사이의 거리를 허용합니다. 쿼리에는 다음을 수행할 수 있는 $project
단계가 포함되어 있습니다.
다음을 제외한 모든 필드 제외
title
다음과 같은 이름의 필드를 추가합니다.
score
예제
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "phrase": { 5 "path": "title", 6 "query": "men women", 7 "slop": 5 8 } 9 } 10 }, 11 { 12 $project: { 13 "_id": 0, 14 "title": 1, 15 score: { $meta: "searchScore" } 16 } 17 } 18 ])
위의 쿼리는 다음과 같은 결과를 반환합니다:
{ "title" : "Men Without Women", "score" : 3.39743709564209 } { "title" : "Men Vs Women", "score" : 3.39743709564209 } { "title" : "Good Men, Good Women", "score" : 2.878715753555298 } { "title" : "The War Between Men and Women", "score" : 2.205303192138672 } { "title" : "Women Without Men", "score" : 1.983487844467163 } { "title" : "Women Vs Men", "score" : 1.983487844467163 }