Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

$match (집계)

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 파이프라인 최적화
  • 쿼리 조건자의 표현식
  • 0, Null, False 또는 누락된 값
  • 제한 사항
  • Atlas Search를 사용하여 Atlas에서 데이터 필터링하기
  • 예시
  • 동등성 매치
  • 카운트 수행
$match

지정된 조건과 일치하는 문서만 다음 파이프라인 단계로 전달되도록 문서를 필터링합니다.

다음 환경에서 호스팅되는 배포에 $match 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

$match 단계의 프로토타입 형식은 다음과 같습니다.

{ $match: { <query> } }

$match는 쿼리 조건을 지정하는 문서를 받습니다. 쿼리 구문은 읽기 작업 쿼리 구문과 동일합니다. 즉,$match원시 집계 표현식을 허용하지 않습니다. 대신 $expr 쿼리 표현식을 사용하여 $match에 집계 표현식을 포함하세요.

쿼리 술어에 표현식을 포함하려면 $expr 연산자를 사용하세요.

$match 단계는 다음 조건 중 하나가 적용되는 경우 파이프라인 결과에서 문서 를 필터링합니다.

  • $match 쿼리 조건자는 해당 문서 에 대한 0, null 또는 false 값을 반환합니다.

  • $match 쿼리 조건자가 해당 문서 에서 누락된 필드 를 사용합니다.

  • $match 쿼리 구문은 읽기 작업 쿼리 구문과 동일합니다. 즉, $match원시 집계 표현식을 허용하지 않습니다. $match에 집계 표현식을 포함하려면 $expr 쿼리 표현식을 사용하세요.

    { $match: { $expr: { <aggregation expression> } } }
  • 집계 파이프라인의 일부로 $match 쿼리에서 $where을(를) 사용할 수 없습니다.

  • $match 쿼리에서는 $near 또는 $nearSphere를 집계 파이프라인의 일부로 사용할 수 없습니다. 대신 다음 중 하나를 사용할 수 있습니다.

  • $match 단계에서 $text를 사용하려면 $match 단계가 파이프라인의 첫 번째 단계여야 합니다.

    보기$text을(를) 지원하지 않습니다.

    참고

    $text 이 페이지에서는 자체 관리형(Atlas에서 관리하지 않는) 배포를 위한 일반 텍스트 쿼리 기능을 제공합니다. MongoDB Atlas에서 호스팅되는 데이터의 경우 MongoDB는 향상된 전체 텍스트 쿼리 솔루션인 Atlas Search를 제공합니다.

MongoDB Atlas에 저장된 데이터의 경우 $search 쿼리를 실행할 때 Atlas Search 복합 연산자 filter 옵션을 사용하여 문서를 일치시키거나 필터링할 수 있습니다. $search 다음에 $match를 실행하는 것은 복합 연산자 filter 옵션으로 $search를 실행하는 것보다 성능이 떨어집니다.

filter 옵션에 대해 자세히 알아보려면 Atlas 설명서에서 복합을 참조하세요.

이 예시에서는 다음 문서와 함께 articles(이)라는 collection을 사용합니다.

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b257"), "author" : "ahn", "score" : 60, "views" : 1000 }
{ "_id" : ObjectId("55f5a192d4bede9ac365b258"), "author" : "li", "score" : 55, "views" : 5000 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b259"), "author" : "annT", "score" : 60, "views" : 50 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25a"), "author" : "li", "score" : 94, "views" : 999 }
{ "_id" : ObjectId("55f5a1d3d4bede9ac365b25b"), "author" : "ty", "score" : 95, "views" : 1000 }

다음 작업에서는 $match를 사용하여 간단한 동등성 매치를 수행합니다.

db.articles.aggregate(
[ { $match : { author : "dave" } } ]
);

$matchauthor 필드가 dave인 문서를 선택하며 집계는 다음을 반환합니다.

{ "_id" : ObjectId("512bc95fe835e68f199c8686"), "author" : "dave", "score" : 80, "views" : 100 }
{ "_id" : ObjectId("512bc962e835e68f199c8687"), "author" : "dave", "score" : 85, "views" : 521 }

다음 예시에서는 $match 파이프라인 연산자를 사용하여 프로세싱할 문서를 선택한 다음 결과를 $group 파이프라인 연산자로 파이프하여 문서 수를 계산합니다.

db.articles.aggregate( [
{ $match: { $or: [ { score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } } ] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );

집계 파이프라인에서 $matchscore70보다 크고 90보다 작거나 views1000보다 크거나 같은 문서를 선택합니다. 그런 다음 이러한 문서를 $group으로 전달하여 집계를 수행합니다. 집계는 다음을 반환합니다.

{ "_id" : null, "count" : 5 }

다음도 참조하세요.

돌아가기

$lookup