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

샘플 비율(집계)

이 페이지의 내용

  • 정의
  • 행동
  • 예제
$sampleRate

무작위로 선택한 입력 문서를 일치시킵니다. 선택한 문서 수는 총 문서 수에 대한 백분율로 표시되는 샘플 레이트와 대략적으로 일치합니다.

$sampleRate 연산자의 구문은 다음과 같습니다.

{ $sampleRate: <non-negative float> }

선택 프로세스에서는 균일한 무작위 분포를 사용합니다. 샘플 레이트는 0과 1 사이의 부동 소수점 숫자로, 주어진 문서가 파이프라인을 통과할 때 선택될 확률을 나타냅니다.

예를 들어 샘플 속도가 0.33 문서 3개 중 대략 1개를 선택합니다.

이 표현식은 다음과 같습니다.

{ $match: { $sampleRate: 0.33 } }

다음과 같이 $rand 연산자를 사용하는 것과 동일합니다.

{ $match: { $expr: { $lt: [ { $rand: {} }, 0.33 ] } } }

선택 프로세스가 비결정적이므로 동일한 데이터를 반복적으로 실행하면 다른 결과가 생성됩니다. 일반적으로 데이터 세트가 작을수록 각 실행에서 선택된 문서 수의 변동성이 더 커집니다. collection의 크기가 커지면 선택된 문서 수가 균일한 무작위 분포에서 예상 값에 근접합니다.

참고

각 실행할 때마다 정확한 수의 문서가 필요한 경우 $sampleRate 대신 $sample 연산자를 사용해야 합니다.

이 코드는 100개의 문서로 구성된 작은 collection을 만듭니다.

N = 100
bulk = db.collection.initializeUnorderedBulkOp()
for ( i = 0; i < N; i++) { bulk.insert( {_id: i, r: 0} ) }
bulk.execute()

파이프라인에서 $sampleRate 연산자를 사용하여 collection에서 임의의 문서를 선택할 수 있습니다. 이 예에서는 $sampleRate 를 사용하여 문서의 약 1/3을 선택합니다.

db.collection.aggregate(
[
{ $match: { $sampleRate: 0.33 } },
{ $count: "numMatches" }
]
)

다음은 샘플 collection에 대한 5개의 실행 결과입니다.

{ "numMatches" : 38 }
{ "numMatches" : 36 }
{ "numMatches" : 29 }
{ "numMatches" : 29 }
{ "numMatches" : 28 }

다음도 참조하세요.

← rtrim(집계)

이 페이지의 내용