sql >> Databáze >  >> NoSQL >> MongoDB

Jak najít náhodný záznam v Mongoose

Smyslem získání náhodného záznamu je dotazovat se na všechny odpovídající záznamy, ale získat pouze jeden. To je to, co findOne() bez daných kritérií.

Pak budete chtít vybrat náhodný záznam ve všech možných shodách. To provede:

  1. Zjistěte, kolik možných záznamů může být - používáme count() na sbírce za to. Všimněte si, že jak je uvedeno v komentářích, count je ve verzi 4 zastaralá a místo toho je třeba používat odhadovaný počet dokumentů nebo počet dokumentů. Rozdíl spočívá mimo jiné v přesnosti/použití paměti. Tady je příspěvek SO, který o tom trochu diskutuje.

  2. Vymyslete náhodné číslo v rámci našeho počtu.

  3. Použijte skip() "přeskočit" na požadovanou shodu a vrátit ji.

Zde je úryvek upravený z této odpovědi SO:

// 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. Je příkaz UNLINK vždy lepší než příkaz DEL?

  2. Jaké jsou hlavní rozdíly mezi Redis Pub/Sub a Redis Stream?

  3. Návrhové vzory JavaScriptu – řešení nežádoucí asynchronie

  4. Jak nakonfigurovat redis-cluster při použití spring-data-redis 1.7.0.M1