MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да намерите произволен запис в Mongoose

Идеята зад получаването на произволен запис е да се запитат всички съвпадащи записи, но просто да се получи един. Това е, което findOne() прави без дадени критерии.

След това ще искате да изберете произволен запис във всички възможни съвпадения. Това се прави от:

  1. Разберете колко възможни записи може да има - използваме count() в колекцията за това. Имайте предвид, че, както е споменато в коментарите, count е остарял във версия 4 и вместо това трябва да се използва evaludDocumentCount или countDocuments. Различното се крие в прецизността/използването на паметта, наред с други неща. Ето SO публикация, която го обсъжда малко.

  2. Измислете произволно число в рамките на нашия брой.

  3. Използвайте skip() за да „прескочите“ до желаното съвпадение и да го върнете.

Ето фрагмент, модифициран от този 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb сумира размера на полетата на масива

  2. mongodb $ в лимит

  3. Монго сортиране при изчислено условие

  4. Как да актуализирам стойността на конкретен вграден документ, вътре в масив, на конкретен документ в MongoDB?

  5. Mongo DB намира всички записи с най-висока стойност в зависимост от ключово поле