Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$sample (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$sample

Seleciona aleatoriamente o número especificado de documentos a partir dos documentos de entrada.

O estágio $sample tem a seguinte sintaxe:

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

N é o número de documentos para selecionar aleatoriamente.

Se todas as seguintes condições forem verdadeiras, o $sample utilizará um cursor pseudoaleatório para selecionar os documentos do N :

  • $sample é o primeiro estágio do pipeline.

  • N é inferior a 5% do total de documentos na coleção.

  • A coleção contém mais de 100 documentos.

Se qualquer uma das condições anteriores for falsa, $sample:

  • Lê todos os documentos gerados de um estágio de agregação anterior ou de uma varredura de coleção.

  • Executa uma classificação aleatória para selecionar N documentos. As classificações aleatórias estão sujeitas às restrições de memória de classificação.

    Observação

    As visualizações são o resultado de pipelines de agregação. Quando você usa $sample em uma visualização, o MongoDB acrescenta o estágio ao final da sintaxe do aggregation pipeline da visualização. Portanto, o estágio $sample em uma visualização nunca é o primeiro estágio e sempre resulta em uma varredura de collection.

Esta seção mostra um exemplo de pipeline de agregação que usa a seguinte coleção 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 }
] )

A seguinte operação de agregação seleciona aleatoriamente 3 documentos da coleção:

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

A operação retorna três documentos aleatórios.

Dica

Veja também:

← $replaceWith (agregação)