문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

$match (aggregation)

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 파이프라인 최적화
  • 제한 사항
  • Atlas Search를 사용하여 Atlas에서 데이터 필터링하기
  • 예제
  • 동급 일치
  • 카운트 수행
  • 추가 정보
$match

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

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

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

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

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

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

{ $match: { <query> } }

$match는 쿼리 조건을 지정하는 문서를 받습니다. 쿼리 구문은 읽기 작업 쿼리 구문과 동일합니다. 즉,$match원시 집계 표현식을 허용하지 않습니다. 대신 $expr 쿼리 표현식을 사용하여 $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 (aggregation)