문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ / / /

Atlas Search 결과 정렬

이 페이지의 내용

  • 구문
  • 옵션
  • 집계 결과
  • SEARCH_META 애그리게이션 변수
  • 예제

Atlas Search count 옵션은 쿼리에 대한 검색 결과 수를 표시하는 필드를 메타데이터 결과 문서에 추가합니다. count 를 사용하여 결과 집합의 크기를 결정할 수 있습니다. $search 또는 $searchMeta 단계에서 사용할 수 있습니다. 총 문서 수 또는 쿼리와 일치하는 문서 수의 하한을 표시하려면 연산자 또는 컬렉터 와 함께 사용해야 합니다.

참고

샤딩된 컬렉션에 count 옵션을 사용하려면 클러스터에서 MongoDB v6.0 이상을 실행해야 합니다. MongoDB v7.2.0을 실행하는 샤딩된 Atlas 클러스터에서 $searchMetacount에 대한 오류를 반환할 수 있습니다.

MongoDB는 count$searchMeta 단계와 함께 사용하여 쿼리에 대한 메타데이터 결과만 조회할 것을 권장합니다. $search 단계를 사용하여 메타데이터 결과 및 쿼리 결과를 조회하려면 $$SEARCH_META 변수를 사용해야 합니다. 자세히 알아보려면 SEARCH_META 집계 변수를 참조하세요.

참고

설명 모드에서 count 로 실행된 쿼리에 대한 결과에 count 결과가 포함되지 않습니다.

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

{
"$searchMeta"|"$search": {
"index": "<index name>", // optional, defaults to "default"
"<operator>": {
<operator-specifications>
},
"count": {
"type": "lowerBound"|"total",
"threshold": <number-of-documents> //optional
}
}
}
필드
유형
설명
필수 사항입니다.
type
문자열

결과 집합에 포함된 문서의 개수 유형입니다. 값은 다음 중 하나일 수 있습니다:

  • lowerBound - 쿼리와 일치하는 문서 수의 하한값을 확인할 수 있습니다. 하한값으로 threshold을 설정할 수 있습니다.

  • total - 를 입력하면 쿼리와 일치하는 문서 수를 정확하게 계산할 수 있습니다. 결과 집합이 큰 경우 Atlas 검색에서 lowerBound 개수를 반환하는 데 시간이 더 오래 걸릴 수 있습니다.

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

아니
threshold
int
typelowerBound인 경우 정확한 개수에 포함할 문서 수입니다. 생략할 경우 기본값은 1000이며, 이는 1000까지의 숫자는 정확한 개수이고 1000을 초과하는 숫자는 결과에 포함된 문서 수에 대한 대략적인 개수임을 나타냅니다.
아니

결과 문서에 포함된 개수 문서에는 다음과 같은 정수 필드가 포함되어 있습니다.

옵션
설명
lowerBound
이 결과 세트의 하한값입니다. 이는 type 옵션을 생략하고 lowerBound 유형의 count를 명시적으로 요청하는 경우 기본적으로 반환됩니다.
total
이 결과 집합의 총 개수입니다. 이 값은 total 유형의 개수가 요청된 경우에만 반환됩니다.

$search 단계를 사용하여 쿼리를 실행하면 Atlas Search는 메타데이터 결과를 $$SEARCH_META 변수에 저장하고 검색 결과만 반환합니다. 지원되는 모든 집계 파이프라인 단계에서 $$SEARCH_META 변수를 사용하여 $search 쿼리에 대한 메타데이터 결과를 볼 수 있습니다.

MongoDB는 검색 결과와 메타데이터 결과가 모두 필요한 경우에만 $$SEARCH_META 변수를 사용할 것을 권장합니다. 해당 경우가 아니면 다음을 사용하세요.

  • $search 검색 결과만 표시하는 단계.

  • $searchMeta 메타데이터 결과만 표시하는 단계.

예제

sample_mflix.movies 컬렉션의 released 필드에 인덱스가 있다고 가정해 보겠습니다.

{
"mappings": {
"dynamic": false,
"fields": {
"released": {
"type": "date"
}
}
}
}

다음 쿼리는 movies 컬렉션에서 2011년 9월 1일 근처에 개봉된 영화를 검색합니다. 이 쿼리는 결과의 총 개수를 요청합니다. 쿼리에는 다음이 포함됩니다:

  • $project 단계 - 문서에서 titlereleased를 제외한 모든 필드를 제외하고 $$SEARCH_META 변수에 저장된 메타데이터 결과를 meta라는 필드의 값으로 포함합니다.

  • $limit 단계로 출력을 2개 문서로 제한합니다.

db.movies.aggregate([
{
"$search": {
"near": {
"path": "released",
"origin": ISODate("2011-09-01T00:00:00.000+00:00"),
"pivot": 7776000000
},
"count": {
"type": "total"
}
}
},
{
"$project": {
"meta": "$$SEARCH_META",
"title": 1,
"released": 1
}
},
{
"$limit": 2
}
])

Atlas Search은 쿼리에 대해 다음과 같은 결과를 반환합니다:

{
"_id" : ObjectId("573a13c3f29313caabd6b025"),
"title" : "Submarino",
"released" : ISODate("2011-09-01T00:00:00Z"),
"meta" : {
"count" : { "total" : NumberLong(23026) }
}
}
{
"_id" : ObjectId("573a13c7f29313caabd748f7"),
"title" : "Devil's Playground",
"released" : ISODate("2011-09-01T00:00:00Z"),
"meta" : {
"count" : { "total" : NumberLong(23026) }
}
}

결과에 대해 자세히 알아보려면 Count 결과를 참조하세요.

다음 예제에서는 sample_mflix.movies 컬렉션의 year 필드에 대한 인덱스를 사용합니다:

{
"mappings": {
"dynamic": false,
"fields": {
"year": {
"type": "number"
}
}
}
}

다음 쿼리는 movies 컬렉션에서 2010~2015년 사이에 나온 영화를 검색합니다. 쿼리는 결과의 하한 개수를 요청합니다.

db.movies.aggregate([
{
"$searchMeta": {
"range": {
"path": "year",
"gte": 2010,
"lte": 2015
},
"count": {
"type": "lowerBound"
}
}
}
])

Atlas Search가 반환하는 결과:

{ "count" : { "lowerBound" : NumberLong(1001) } }

다음 검색은 collection에서 년부터 년 사이의 영화를 2010 2015 movies 쿼리합니다. 쿼리는 결과의 총 개수를 요청합니다.

db.movies.aggregate([
{
"$searchMeta": {
"range": {
"path": "year",
"gte": 2010,
"lte": 2015
},
"count": {
"type": "total"
}
}
}
])

Atlas Search가 반환하는 결과:

{ "count" : { "total" : NumberLong(5971) } }

결과에 대해 자세히 알아보려면 Count 결과를 참조하세요.

돌아가기

3. 검색어 강조 표시

다음

5. 페이지 매김 결과