Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Etapas de la pipeline de agregación

$sample (agregación)

$sample

Novedad en la versión 3.2.

Selecciona aleatoriamente la cantidad especificada de documentos de los documentos de entrada.

$sample sintaxis de etapa:

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

N es el número de documentos a seleccionar aleatoriamente. Configura N en un número entero mayor o igual que 1.

Si se cumplen todas las siguientes condiciones, $sample utiliza un cursor pseudoaleatorio para seleccionar los documentos N:

  • $sample es la primera etapa de la pipeline.

  • N es menos del 5% de los documentos totales de la colección.

  • La colección contiene más de 100 documentos.

Si alguna de las condiciones anteriores es falsa, $sample:

  • Lee todos los documentos que se obtienen de una etapa de agregación anterior o de un escaneo de colección.

  • Realiza una ordenación aleatoria para seleccionar N documentos. Las ordenaciones aleatorias están sujetas a las ordenar restricciones de memoria.

    Nota

    Las vistas son el resultado de pipelines de agregación. Cuando utiliza $sample en una vista, MongoDB añade la etapa al final de la sintaxis del pipeline de agregación de la vista. En consecuencia, la etapa $sample en una vista nunca es la primera y siempre resulta en un escaneo de colección.

Si usas $sample en un clúster fragmentado, cada partición realiza la operación de muestreo de forma independiente. mongos toma muestras del resultado combinado de la operación de muestreo de cada partición y devuelve el número solicitado de documentos.

Esta sección muestra un ejemplo de un pipeline de agregación que utiliza la siguiente colección de 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 }
] )

La siguiente operación de agregación selecciona aleatoriamente 3 documentos de la colección:

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

La operación devuelve tres documentos aleatorios.

Tip

Volver

$replaceWith

En esta página