Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

$sample (agregação)

$sample

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

$sample sintaxe de estágio :

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

N é o número de documentos para selecionar aleatoriamente. Defina N como um número inteiro maior ou igual a 1.

Se todas as seguintes condições forem verdadeiras, o $sample usará um cursor pseudoaleatório para selecionar os documentos 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 àsrestriçõ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 um modo de exibição, o MongoDB acrescenta o estágio ao final da sintaxe do pipeline de agregação do modo de exibição. Portanto, o estágio $sample em uma exibição nunca é o primeiro estágio e sempre resulta em uma varredura de coleção.

Se você usar $sample em um cluster fragmentado, cada fragmento executará a operação de amostra de forma independente. mongos faz uma amostra do resultado mesclado da operação de amostragem de cada fragmento e retorna o número solicitado de documentos.

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.

Veja também:

Para usar o driver MongoDB .NET/C# para adicionar um $sample estágio a um pipeline de agregação , chame o método Sample() em um PipelineDefinition objeto.

O exemplo abaixo cria um estágio de pipeline que retorna cinco documentos aleatórios da collection de entrada:

var pipeline = new EmptyPipelineDefinition<Movie>()
.Sample(5);

Voltar

$replaceWith

Nesta página