샘플 비율(집계)
정의
$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 }