Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.8K
Visualizações
How to find random record in Mongoose

How can I find random records in MongoDB?

I found multiple articles here on StackOverflow, but I couldn't understand them. Like for example:

db.yourCollection.find().limit(-1).skip(yourRandomNumber).next()

How would I execute it in my code? (collection is User)

User.findOne(RANDOM PLAYER).then(result) {
    console.log(result);
}
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

The idea behind getting a random record is to query all the matching records but just get one. This is what findOne() does without any criteria given.

Then you will want to pick a random entry in all the possible matches. This is done by:

  1. Find out how many possible entries there could be - we use count() on the collection for this. Note that, as mentioned in comments, count is deprecated in version 4 and one should use estimatedDocumentCount or countDocuments instead. The different lies in precision/memory usage amongst other things. Here's a SO post discussing it a bit.

  2. Come up with a random number within our count.

  3. Use skip() to "skip" to the desired match and return that.

Here's a snippet as modified from this SO answer:

// Get the count of all users
User.count().exec(function (err, count) {

  // Get a random entry
  var random = Math.floor(Math.random() * count)

  // Again query all users but only fetch one offset by our random #
  User.findOne().skip(random).exec(
    function (err, result) {
      // Tada! random user
      console.log(result) 
    })
})
over 4 years ago · Santiago Trujillo Relatório

0

To get random document(s) from mongodb by using mongoose.

    limitrecords=10;

    function getRandomArbitrary(min, max) {
      return Math.ceil(Math.random() * (max - min) + min);
    }

    var userschema = new Schema({
      name: String
    });

    User = mongoose.model('User', userschema);

    User.count({your_query},function(err,count){

       var skipRecords = getRandomArbitrary(1, count-limitrecords);

       query.skip(skipRecords); // Random Offset

       query.exec(function(err,result){
         console.log(result);  // 10 random users 
       });

    });

This is an example for 10 random records, you can set "limitrecords" according to your requirement.

Thanks!

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda