AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

span (MongoDB Search 연산자)

참고

span 연산자 더 이상 사용되지 않습니다. 대신 이 구문을 사용하세요.

span

span 연산자는 텍스트 필드의 리전 내에서 Atlas Search가 일치하는 텍스트를 찾습니다. 이 기능을 사용하여 지정된 정밀도까지 서로 가까이 있는 문자열을 찾을 수 있습니다. span 연산자는 쿼리가 위치 정보를 추적해야 하기 때문에 다른 연산자보다 계산 집약적입니다.

span 는 텀 수준 연산자이므로 query 필드는 분석되지 않습니다. query 필드가 특수 문자가 포함된 단일 용어로 처리되기 때문에 용어 수준 연산자는 키워드 분석기 에서 잘 작동합니다.

span 쿼리는 점수별로 순위가 매겨지지 않습니다.

span 의 구문은 다음과 같습니다:

{
$search: {
"index": <index name>, // optional, defaults to "default"
"span": {
"term" | <positional-operator>": {
<operator-specification>
}
}
}
}

참고

span 검색 쿼리는 복합 연산자 를 사용할 수 없습니다.

term 연산자를 사용하여 Atlas Search에 용어를 지정할 수 있습니다. term 연산자는 필수이며 span 위치 연산자와 함께 사용할 경우 위치 연산자의 가장 안쪽 하위 연산자여야 합니다.

term 연산자의 구문은 다음과 같습니다.

"term": {
"path": "<path-to-field>",
"query": "<terms-to-search>"
}

term 연산자는 다음 필드를 사용합니다.

옵션
유형
필수 사항입니다.
설명

path

문자열

네

검색할 인덱싱된 필드입니다.

query

문자열

네

Atlas Search에 사용할 용어 또는 구문.

위치 연산자를 사용하여 용어 연산자와 함께 Atlas Search에 표시할 용어의 위치를 지정할 수 있습니다. 위치 연산자의 유형은 document 입니다. span 연산자 쿼리에 위치 연산자를 하나 이상 지정해야 합니다. 위치 연산자는 다른 span 위치 연산자를 재귀적으로 사용할 수 있습니다.

참고

예시 정보

이 페이지의 예시에서는 sample_mflix.movies 컬렉션을 사용합니다. 샘플 데이터를 로드 하고 생성 한 동적 인덱스 default 을 영화 컬렉션에 생성하면 컬렉션에 대해 다음 $search 샘플 쿼리를 실행할 수 있습니다. 샘플 쿼리는 $limit 단계를 사용하여 결과를 5 개의 문서로 제한하고 $project 단계를 사용하여 결과에서 title 필드를 제외한 모든 필드를 제외합니다.

span 다음과 같은 선택적 위치 연산자를 사용합니다.

contains 위치 연산자는 다른 텀 내에 포함된 텀과 일치합니다. 위치 연산자 를 재귀적으로 사용하거나 contains 내에서 용어 연산자만 사용하여 Atlas Search 용어를 지정할 수 있습니다.

contains 위치 연산자의 구문은 다음과 같습니다.

{
"$search": {
"span": {
"contains": {
"spanToReturn": "inner"|"outer",
"little": { <positional-or-term-operator-specification> },
"big": { <positional-or-term-operator-specification> }
}
}
}
}

contains 위치 연산자는 다음 필드를 사용합니다.

필드
유형
필수 사항입니다.
설명

big

문서

네

재귀적으로 지정된 하나 이상의 위치 연산자 또는 텀 연산자입니다. big에 대해 span이 실행하는 쿼리 유형은 spanToReturn의 값에 따라 다릅니다.

  • outer: span은 little의 텀을 하나 이상 포함하는 big의 텀과 일치합니다.

  • inner: span 은 big 의 텀 내에 있는 little 의 텀과 일치합니다.

little

문서

네

재귀적으로 지정된 하나 이상의 위치 연산자 또는 텀 연산자입니다. little에 대해 span이 실행하는 쿼리 유형은 spanToReturn의 값에 따라 다릅니다.

  • inner: span 은 big 의 텀 내에 있는 little 의 텀과 일치합니다.

  • outer: span은 little의 텀을 하나 이상 포함하는 big의 텀과 일치합니다.

score

문서

no

이 Atlas Search의 결과에 적용할 점수입니다.

spanToReturn

문자열

네

실행할 쿼리 유형과 반환할 일치하는 결과입니다. 값은 다음 중 하나일 수 있습니다.

  • inner - big의 텀 내에 있는 little 의 텀과 일치하는 내 쿼리를 실행합니다.

  • outer - little의 텀을 하나 이상 포함하는 big 의 텀과 일치하는 포함 쿼리를 실행합니다.

다음 예제 쿼리는 span.contains 을 사용하여 train 용어가 great 및 robbery 용어와 함께 나타나는 문서를 찾습니다. 여기서 great 와 robbery 5 title 필드입니다.

1db.movies.aggregate([
2 {
3 "$search": {
4 "span": {
5 "contains": {
6 "spanToReturn": "outer",
7 "little": {
8 "term": {
9 "path": "title",
10 "query": "train"
11 }
12 },
13 "big": {
14 "near": {
15 "clauses": [
16 {
17 "term": {
18 "path": "title",
19 "query": "great"
20 }
21 },
22 {
23 "term": {
24 "path": "title",
25 "query": "robbery"
26 }
27 }
28 ],
29 "slop": 5
30 }
31 }
32 }
33 }
34 }
35 },
36 {
37 "$limit": 5
38 },
39 {
40 "$project": {
41 "_id": 0,
42 "title": 1
43 }
44 }
45])
[
{ title: 'The Great Train Robbery' },
{ title: 'The Great Train Robbery' },
{ title: "The Great St. Trinian's Train Robbery" }
]

MongoDB Search는 텀 train little great 및( 를 사용하여 지정) robbery big안에 텀 ( 을 사용하여 지정)이 포함된 문서를 반환합니다. spanToReturn 6 줄에서 를 로 inner 설정하다 MongoDB Search는(train 를 사용하여 little 지정됨)이라는 텀 great 이 robbery big및 텀().

first 위치 연산자는 지정된 숫자를 사용하여 Atlas Search 용어의 위치를 식별합니다. 위치 연산자 를 재귀적으로 사용하거나 용어 연산자만 사용하여 Atlas Search 용어를 지정할 수 있습니다. span 은(는) Atlas Search 텀의 위치가 지정된 숫자보다 작거나 같은 문서와 일치합니다.

first 위치 연산자의 구문은 다음과 같습니다.

{
"$search": {
"span": {
"first": {
"endPositionLte": <term-position>,
"operator": { <span-positional-or-term-operator-specification> },
"score": { <score-options> }
}
}
}
}

first 위치 연산자는 다음 필드를 사용합니다.

옵션
유형
필수 사항입니다.
설명

endPositionLte

int

no

Atlas Search 용어의 위치를 지정하는 숫자입니다. 여러 용어에 대해 Atlas Search를 지정하는 경우 마지막 용어는 이 값보다 작거나 같아야 합니다. 생략하면 기본값은 3 입니다.

operator

문서

네

위치 연산자 또는 용어 연산자 옵션이 포함된 문서입니다.

score

문서

no

이 Atlas Search의 결과에 적용할 점수입니다.

다음 예제 쿼리에서는 span.first 을 사용하여 지정된 string 이 title 필드에 나타나는 문서를 찾습니다. endPositionLte 매개변수의 값은 2 이며, 이는 term 연산자를 사용하여 지정된 Atlas Search 용어가 필드의 첫 번째 또는 두 번째 단어여야 함을 의미합니다.

1db.movies.aggregate([
2 {
3 "$search": {
4 "span": {
5 "first": {
6 "endPositionLte": 2,
7 "operator": {
8 "term": {
9 "path": "title",
10 "query": "dance"
11 }
12 }
13 }
14 }
15 }
16 },
17 {
18 "$limit": 5
19 },
20 {
21 "$project": {
22 "_id": 0,
23 "title": 1
24 }
25 }
26])
[
{ title: 'Dance Program' },
{ title: 'Slam Dance' },
{ title: 'Last Dance' },
{ title: 'War Dance' },
{ title: 'Delhi Dance' }
]

MongoDB Search는 title 필드 의 첫 번째 또는 두 번째 위치에 검색 dance 가 포함된 문서를 반환합니다.

near 위치 연산자는 서로 가까이 있는 Atlas Search 용어를 포함하는 두 개 이상의 절과 일치합니다. 위치 연산자 목록을 재귀적으로 사용하거나 용어 연산자만 사용하여 Atlas Search 용어를 지정할 수 있습니다.

near 위치 연산자의 구문은 다음과 같습니다.

{
"$search": {
"span": {
"near": {
"clauses": [
{ <span-positional-or-term-operator-specification> },
...
],
"slop": <distance-number>,
"inOrder": true|false
}
}
}
}

near 위치 연산자는 다음 필드를 사용합니다.

필드
유형
필수 사항입니다.
설명

clauses

문서 배열

네

서로 가까이 있어야 하는 Span 절입니다. 절은 비워 둘 수 없습니다. 각 문서에는 span 위치 또는 용어 연산자 옵션만 포함되어 있습니다.

inOrder

부울

no

절의 용어에 대한 Atlas Search가 지정된 순서대로 이루어져야 하고 겹치지 않아야 하는지 여부를 지정하는 플래그입니다.

값은 다음 중 하나일 수 있습니다.

  • true - Atlas에서 지정된 순서대로 절의 용어를 겹치지 않고 검색합니다.

  • false - Atlas에서 절의 용어를 임의의 순서로 검색

생략하는 경우 기본값은 false입니다.

score

문서

no

이 Atlas Search의 결과에 적용할 점수입니다.

slop

integer

no

절의 용어 사이의 허용 거리입니다. 값이 낮을수록 용어 간의 위치 거리가 줄어들고 값이 클수록 쿼리를 충족하기 위해 단어 사이의 거리가 길어집니다. 기본값은 0 이며, 이는 서로 다른 절에 있는 단어가 인접해 있어야 일치하는 것으로 간주됩니다.

다음 예제 쿼리는 span.near 를 사용하여 Atlas Search에서 문자열 prince 와 pauper 가 서로 가까이 있는 문서를 검색합니다. inOrder 매개 변수가 false 로 설정되어 있으므로 Atlas Search 용어의 순서는 상관 없습니다. slop 매개변수가 4 로 설정되어 있으므로 Atlas Search 용어는 최대 4단어까지 구분할 수 있습니다.

1db.movies.aggregate([
2 {
3 "$search" : {
4 "span": {
5 "near": {
6 "clauses": [
7 { "term": { "path": "title", "query": "prince" } },
8 { "term": { "path": "title", "query": "pauper" } }
9 ],
10 "slop": 4,
11 "inOrder": false
12 }
13 }
14 }
15 },
16 {
17 "$limit": 5
18 },
19 {
20 "$project": {
21 "_id": 0,
22 "title": 1
23 }
24 }
25])
[ { title: 'The Prince and the Pauper' } ]

MongoDB Search는 title 필드 에서 검색 prince 및 pauper가 4단어 미만으로 구분되어 포함된 문서 반환합니다.

or 위치 연산자는 두 개 이상의 절과 일치합니다. 위치 연산자 목록을 재귀적으로 사용하거나 용어 연산자만 사용하여 Atlas Search 용어를 지정할 수 있습니다.

or 위치 연산자의 구문은 다음과 같습니다.

{
"$search": {
"span": {
"or": {
"clauses": [
{ <span-positional-or-term-operator-specification> },
...
],
"score": { <scoring-options> }
}
}
}
}

or 위치 연산자는 다음 필드를 사용합니다.

옵션
유형
필수 사항입니다.
설명

clauses

문서 배열

네

Atlas Search 용어를 지정하는 Span 절입니다. 절 중 하나가 일치해야 하며 절은 비워 둘 수 없습니다. 각 문서에는 재귀적으로 지정된 span 위치 연산자 또는 용어 연산자 옵션만 포함되어야 합니다.

score

문서

no

이 Atlas Search의 결과에 적용할 점수입니다.

다음 예제 쿼리는 span.or 절을 사용하여 title 필드에 city 또는 country 이 있는 문서에 대해 Atlas Search 가 수행하는 두 용어 연산자 쿼리를 지정합니다.

1db.movies.aggregate([
2 {
3 "$search" : {
4 "span": {
5 "or": {
6 "clauses": [
7 { "term": { "path": "title", "query": "city" } },
8 { "term": { "path": "title", "query": "country" } }
9 ],
10 }
11 }
12 }
13 },
14 {
15 "$limit": 5
16 },
17 {
18 "$project": {
19 "_id": 0,
20 "title": 1
21 }
22 }
23])
[
{ title: 'Country' },
{ title: 'City Lights' },
{ title: 'King & Country' },
{ title: 'Fat City' },
{ title: 'Atlantic City' }
]

MongoDB Search는 title 필드 에 city 또는 country 검색 가 포함된 문서를 반환하지만 동일한 title에는 둘 다 반환하지 않습니다.

subtract 위치 연산자는 다른 일치 항목과 겹치는 일치 항목을 제거합니다. 위치 연산자 목록을 재귀적으로 사용하거나 용어 연산자만 사용하여 Atlas Search 용어를 지정할 수 있습니다. subtract 절을 사용하여 Atlas Search 결과에서 특정 문자열을 제외할 수 있습니다.

subtract 위치 연산자의 구문은 다음과 같습니다.

{
"$search": {
"span": {
"subtract": {
"include": { <span-positional-or-term-operator-specification> },
"exclude": { <span-positional-or-term-operator-specification> }
}
}
}
}

subtract 위치 연산자는 다음 필드를 사용합니다.

옵션
유형
필수 사항입니다.
설명

exclude

문서

네

include 필드에 지정된 용어 또는 구문 일치 항목과 중복되는 항목을 제거하기 위해 용어 또는 구문 일치 항목을 지정하는 문서입니다. 스팬 위치 연산자 와 용어 연산자를 사용하여 용어 또는 구를 지정할 수 있습니다.

include

문서

네

위치 연산자 를 사용하거나 용어 연산자만 사용하여 포함할 일치 용어를 지정하는 문서입니다.

score

문서

no

이 Atlas Search의 결과에 적용할 점수입니다.

다음 예제 쿼리에서는 span.subtract title father 를 사용하여 필드에 및 son 단어가 3 서로 단어 내에 순서에 관계없이 포함된 문서를 Atlas Search에 검색합니다. father 과 son 사이에 like 라는 단어가 있는 문서는 제외됩니다.

1db.movies.aggregate([
2 {
3 "$search" : {
4 "span": {
5 "subtract": {
6 "include": {
7 "near": {
8 "clauses": [
9 { "term": { "path": "title", "query": "father" } },
10 { "term": { "path": "title", "query": "son" } }
11 ],
12 "inOrder": false,
13 "slop": 3
14 }
15 },
16 "exclude": { "term": { "path": "title", "query": "like" } }
17 }
18 }
19 }
20 },
21 {
22 "$limit": 5
23 },
24 {
25 "$project": {
26 "_id": 0,
27 "title": 1
28 }
29 }
30])
[
{ title: 'Father, Son & Holy Cow' },
{ title: 'My Father and My Son' },
{ title: 'Jimmy Rosenberg: The Father, the Son & the Talent' }
]

MongoDB Search는 제목이 Like Father Like Son 인 문서 반환하지 않는데, 이는 title 필드 father 및 son 단어가 포함되어 있지만 그 사이에 like 도 포함되어 있으며, 이는 exclude 기준에 속하기 때문입니다. 쿼리.