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

$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 muestra expresada como un porcentaje del total de documentos.

El operador $sampleRate tiene la siguiente sintaxis:

{ $sampleRate: <non-negative float> }

El proceso de selección utiliza una distribución aleatoria uniforme. La tasa de muestreo es un número de punto flotante entre 0 y 1, inclusive, que representa la probabilidad de que un documento dado sea seleccionado a medida que pasa por la pipeline.

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

Esta expresión:

{ $match: { $sampleRate: 0.33 } }

es equivalente a usar el/la $rand operador de la siguiente manera:

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

Ejecutar varias veces los mismos datos producirá resultados diferentes, ya que el proceso de selección es no determinístico. En general, los conjuntos de datos más pequeños presentarán una mayor variabilidad en la cantidad de documentos seleccionados en cada ejecución. A medida que aumenta el tamaño de la colección, el número de documentos elegidos se acercará al valor esperado para una distribución aleatoria uniforme.

Nota

Si se requiere un número exacto de documentos de cada ejecución, se debe utilizar el operador $sample en lugar de $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 pipeline para seleccionar documentos aleatorios de la colección. En este ejemplo utilizamos $sampleRate para seleccionar aproximadamente un tercio de los documentos.

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

Esta es la salida 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