Docs Menu
Docs Home
/ /

$sampleRate (agregación)

$sampleRate

Coincide con una selección aleatoria de documentos de entrada. El número de documentos seleccionados se aproxima a la tasa de muestreo, expresada como porcentaje del número total de documentos.

El $sampleRate operator has the following syntax:

{ $sampleRate: <non-negative float> }

The selection process uses a uniform random distribution. The sample rate is a floating point number between 0 and 1, inclusive, which represents the probability that a given document will be selected as it passes through the pipeline.

Por ejemplo, una frecuencia de muestreo de 0.33 selecciona aproximadamente un documento de cada tres.

Esta expresión:

{ $match: { $sampleRate: 0.33 } }

is equivalent to using the $rand operator as follows:

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

Repeated runs on the same data will produce different outcomes since the selection process is non-deterministic. In general, smaller datasets will show more variability in the number of documents selected on each run. As collection size increases, the number of documents chosen will approach the expected value for a uniform random distribution.

Nota

If an exact number of documents is required from each run, the $sample operator should be used instead of $sampleRate.

Este código crea una pequeña colección con 100 documentos.

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

El operador $sampleRate se puede usar en una secuencia de comandos para seleccionar documentos aleatorios de la colección. En este ejemplo, usamos $sampleRate para seleccionar aproximadamente un tercio de los documentos.

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

Este es el resultado de 5 ejecuciones en la colección de muestra:

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

Tip

  • $sample

  • $rand

Volver

$rtrim

En esta página