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

$sample (집계)

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$sample

입력 문서에서 지정된 수의 문서를 임의로 선택합니다.

$sample 단계의 구문은 다음과 같습니다.

{ $sample: { size: <positive integer N> } }

N 는 무작위로 선택할 문서 수입니다.

다음 조건이 모두 true이면 $sample 의사 무작위 커서를 사용하여 N 문서를 선택합니다:

  • $sample 는 파이프라인의 첫 번째 단계입니다.

  • N 컬렉션에 있는 전체 문서의 5% 미만입니다.

    참고

    $sample 가 전체 컬렉션 을 스캔할 시기를 결정하는 데 사용하는 임계값을 구성할 수 없습니다. 임계값은 5%입니다. 크기가 컬렉션 에 있는 총 문서 수의 5%보다 큰 경우 $sample 는 생성된 임의의 값을 기준으로 상위 k 개 정렬을 수행합니다. 샘플 문서가 100MB보다 큰 경우 상위 k개 정렬이 디스크로 유출될 수 있습니다.

  • 이 컬렉션에는 100개 이상의 문서가 포함되어 있습니다.

이전 조건 중 하나라도 거짓이면 $sample:

  • 이전 집계 단계 또는 컬렉션 스캔에서 출력된 모든 문서를 읽습니다.

  • 무작위 정렬을 수행하여 N 개의 문서를 선택합니다. 임의 정렬에는 정렬 메모리 제한이적용됩니다.

    참고

    는 집계 파이프라인의 결과입니다. 뷰에서 $sample를 사용하면 MongoDB는 뷰의 집계 파이프라인 구문 끝에 해당 단계를 추가합니다. 따라서 뷰의 $sample 단계는 첫 번째 단계가 아니며 항상 컬렉션 스캔으로 이어집니다.

샤드 샤딩된 클러스터 에서 $sample 을 사용하는 경우 각 샤드 는 샘플 작업을 독립적으로 수행합니다. mongos 는 각 샤드의 샘플 작업에 대한 병합된 결과를 샘플링하고 요청된 문서 수를 반환합니다.

이 섹션에서는 다음 users 컬렉션을 사용하는 집계 파이프라인의 예를 보여줍니다.

db.users.insertMany( [
{ _id : 1, name : "dave123", q1 : true, q2 : true },
{ _id : 2, name : "dave2", q1 : false, q2 : false },
{ _id : 3, name : "ahn", q1 : true, q2 : true },
{ _id : 4, name : "li", q1 : true, q2 : false },
{ _id : 5, name : "annT", q1 : false, q2 : true },
{ _id : 6, name : "li", q1 : true, q2 : true },
{ _id : 7, name : "ty", q1 : false, q2 : true }
] )

다음 집계 작업은 컬렉션에서 3 개의 문서를 무작위로 선택합니다.

db.users.aggregate(
[ { $sample: { size: 3 } } ]
)

이 작업은 세 개의 무작위 문서를 반환합니다.

다음도 참조하세요.

돌아가기

$replaceWith

이 페이지의 내용