Atlas Search 결과 정렬
이 페이지의 내용
Atlas Search count
옵션은 쿼리에 대한 검색 결과 수를 표시하는 필드를 메타데이터 결과 문서에 추가합니다. count
를 사용하여 결과 집합의 크기를 결정할 수 있습니다. $search 또는 $searchMeta
단계에서 사용할 수 있습니다. 총 문서 수 또는 쿼리와 일치하는 문서 수의 하한을 표시하려면 연산자 또는 컬렉터 와 함께 사용해야 합니다.
참고
샤딩된 컬렉션에 count
옵션을 사용하려면 클러스터에서 MongoDB v6.0 이상을 실행해야 합니다. MongoDB v7.2.0을 실행하는 샤딩된 Atlas 클러스터에서 $searchMeta
는 count
에 대한 오류를 반환할 수 있습니다.
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 | 문자열 | 결과 집합에 포함된 문서의 개수 유형입니다. 값은 다음 중 하나일 수 있습니다:
생략하는 경우 기본값은 | 아니 |
threshold | int | type 이 lowerBound 인 경우 정확한 개수에 포함할 문서 수입니다. 생략할 경우 기본값은 1000 이며, 이는 1000 까지의 숫자는 정확한 개수이고 1000 을 초과하는 숫자는 결과에 포함된 문서 수에 대한 대략적인 개수임을 나타냅니다. | 아니 |
집계 결과
결과 문서에 포함된 개수 문서에는 다음과 같은 정수 필드가 포함되어 있습니다.
SEARCH_META
애그리게이션 변수
$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
단계 - 문서에서title
및released
를 제외한 모든 필드를 제외하고$$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 결과를 참조하세요.