Mongodb: como selecionar uma amostra aleatória de documentos
Você pode usar a seguinte sintaxe para selecionar uma amostra aleatória de documentos de uma coleção no MongoDB:
db.myCollection.aggregate([ { $sample : { size: 4 } } ])
Este exemplo específico seleciona uma amostra aleatória de 4 documentos da coleção chamada myCollection .
Para escolher uma amostra aleatória de tamanho diferente, basta alterar o valor no argumento size .
O exemplo a seguir mostra como usar essa sintaxe na prática com uma equipe de coleta que possui os sete documentos a seguir:
db.teams.insertOne({team: " Mavs ", points: 31}) db.teams.insertOne({team: " Spurs ", points: 22}) db.teams.insertOne({team: " Rockets ", points: 19}) db.teams.insertOne({team: " Warriors ", points: 26}) db.teams.insertOne({team: " Cavs ", points: 33}) db.teams.insertOne({team: " Hornets ", points: 30}) db.teams.insertOne({team: " Nets ", points: 14})
Exemplo: Selecione uma amostra aleatória de documentos no MongoDB
O código a seguir mostra como selecionar uma amostra aleatória de 4 documentos da coleção de equipes :
db.teams.aggregate([ { $sample : { size: 4 } } ])
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("6203ee711e95a9885e1e765d"), team: 'Cavs', points: 33 } { _id: ObjectId("6203ee711e95a9885e1e765b"), team: 'Rockets', points: 19 } { _id: ObjectId("6203ee711e95a9885e1e7659"), team: 'Mavs', points: 31 } { _id: ObjectId("6203ee711e95a9885e1e765f"), team: 'Nets', points: 14 }
Observe que as quatro equipes a seguir estão incluídas nesta amostra aleatória:
- Comerciantes de vinho
- Foguetes
- Mavs
- Redes
Se usarmos a função $sample novamente, ela selecionará outra amostra aleatória de documentos, o que significa que não há garantia de que o mesmo conjunto de documentos será escolhido.
Por exemplo, suponha que selecionamos outra amostra aleatória de 4 documentos da coleção da equipe :
db.teams.aggregate([ { $sample : { size: 4 } } ])
Esta consulta retorna os seguintes documentos:
{ _id: ObjectId("6203ee711e95a9885e1e765b"), team: 'Rockets', points: 19 } { _id: ObjectId("6203ee711e95a9885e1e765f"), team: 'Nets', points: 14 } { _id: ObjectId("6203ee711e95a9885e1e765e"), team: 'Hornets', points: 30 } { _id: ObjectId("6203ee711e95a9885e1e765c"), team: 'Warriors', points: 26 }
As quatro equipes a seguir estão incluídas nesta amostra aleatória:
- Foguetes
- Redes
- Vespas
- Guerreiros
Observe que esta amostra aleatória não corresponde perfeitamente à amostra aleatória do exemplo anterior.
Nota : Você pode encontrar a documentação completa da função $sample aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:
MongoDB: Como verificar se o campo contém uma string
MongoDB: Como usar uma consulta “NO IN”
MongoDB: Como consultar “NOT NULL” em um campo específico