Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$match (집계 단계)

$match

지정된 쿼리 조건자를 기준으로 문서를 필터링합니다. 일치하는 문서는 다음 파이프라인 단계로 전달됩니다.

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

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

{ $match: { <query predicate> } }

$match 쿼리 조건의 구문은 find() 명령의 쿼리 인수에 사용되는 구문과 동일합니다.

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

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

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

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

  • $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 문서에서 복합 참조를 참조하세요.

이 페이지의 예제에서는 sample_mflix 샘플 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.

다음 작업은 를 사용하여 필드 에서 동등성 $match 매치 rated 수행합니다. 필터하다 runtime 결과를 작고 대표적인 설정하다 로 제한합니다.

db.movies.aggregate(
[ { $match : { rated : "TV-PG", runtime : { $gt: 1000 } } } ]
)

$match rated 필드 "TV-PG" runtime 와 같고 이 보다 큰 문서를 선택합니다.1000

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

db.movies.aggregate( [
{ $match: { $or: [
{ runtime: { $gt: 1000 } },
{ year: { $lt: 1910 } }
] } },
{ $group: { _id: null, count: { $sum: 1 } } }
] )
[ { _id: null, count: 6 } ]

$match 집계 파이프라인 에서 는 가 runtime 보다 크거나 1000year 보다 빠른 문서를 1910 선택합니다. 그런 다음 이러한 문서는 $group 계산을 수행하기 위해 로 전송됩니다.

배열 필드 의 요소를 기반으로 문서를 필터하다 하려면 단계의 쿼리 술어에서 연산자 $elemMatch $match 사용합니다.

db.aggregate( [
{
$documents: [
{ student_id: 1, scores: [ 0.75, 0.65, 0.73 ] },
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]
}, {
$match: {
scores: { $elemMatch: { $gte: 0.9 } }
}
}
] )
[
{ student_id: 2, scores: [ 0.9, 0.88, 0.98 ] },
{ student_id: 3, scores: [ 0.9, 0.84, 0.93 ] }
]

이 페이지의 C# 예제에서는 Atlas 샘플 데이터 세트sample_mflix 데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB .NET/ C# 드라이버 문서에서 시작하기 를 참조하세요.

다음 Movie 클래스는 sample_mflix.movies 컬렉션의 문서를 모델링합니다.

public class Movie
{
public ObjectId Id { get; set; }
public int Runtime { get; set; }
public string Title { get; set; }
public string Rated { get; set; }
public List<string> Genres { get; set; }
public string Plot { get; set; }
public ImdbData Imdb { get; set; }
public int Year { get; set; }
public int Index { get; set; }
public string[] Comments { get; set; }
[BsonElement("lastupdated")]
public DateTime LastUpdated { get; set; }
}

참고

Pascal Case를 위한 ConventionPack

이 페이지의 C# 클래스는 속성 이름에 파스칼 표기법을 사용하지만, MongoDB 컬렉션의 필드 이름은 카멜 표기법을 사용합니다. 이 차이를 해결하기 위해 애플리케이션이 시작될 때 다음 코드를 사용하여 ConventionPack을 등록할 수 있습니다.

var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);

MongoDB .NET/ C# 운전자 사용하여 $match 집계 파이프라인 에 단계를 추가하려면 PipelineDefinition 객체 에서 Match() 메서드를 호출합니다.

다음 예시 Title 필드 "The Shawshank Redemption"와 같은 모든 Movie 문서와 일치하는 파이프라인 단계를 만듭니다.

var pipeline = new EmptyPipelineDefinition<Movie>()
.Match(m => m.Title == "The Shawshank Redemption");

이 페이지의 Node.js 예제에서는 Atlas 샘플 데이터 세트sample_mflix 데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB Node.js 운전자 설명서에서 시작하기 를 참조하세요.

MongoDB Node.js 운전자 사용하여 집계 파이프라인 에 $match 단계를 추가하려면 파이프라인 객체 에서 $match 연산자 사용합니다.

다음 예시에서는 title 필드의 값이 "The Shawshank Redemption"과 동일한 모든 movie문서와 일치하는 파이프라인 단계를 만듭니다. 그리고 집계 파이프라인을 실행합니다.

const pipeline = [
{
$match: {
title: "The Shawshank Redemption"
}
}
];
const cursor = collection.aggregate(pipeline);
return cursor;

집계에 대한 자세한 정보와 사용 사례는 완전한 집계 파이프라인 튜토리얼을 참조하세요.

돌아가기

$lookup

스킬 배지 획득

무료로 '데이터 변환의 기초'를 마스터하세요!

자세한 내용을 알아보세요.

이 페이지의 내용