sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan finder du tilfældig rekord i Mongoose

Ideen bag at få en tilfældig post er at forespørge på alle de matchende poster, men bare få en. Dette er hvad findOne() gør uden nogen opgivne kriterier.

Så vil du vælge en tilfældig post i alle de mulige kampe. Dette gøres af:

  1. Find ud af, hvor mange mulige poster der kan være - vi bruger count() på indsamlingen hertil. Bemærk, at som nævnt i kommentarer, count er forældet i version 4, og man bør bruge estimatedDocumentCount eller countDocuments i stedet for. Det forskellige ligger blandt andet i præcision/hukommelsesbrug. Her er et SO-indlæg, der diskuterer det lidt.

  2. Kom med et tilfældigt tal inden for vores optælling.

  3. Brug skip() at "springe over" til det ønskede match og returnere det.

Her er et uddrag som ændret fra dette SO-svar:

// 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) 
    })
})


  1. MongoDB updateOne()

  2. HBase regioner fusionere

  3. Hvordan løser man mongoDB-relateret problem effektivt?

  4. Java MongoDB Objektversionering