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

Произволна извадка от MongoDB, връщаща силно изкривени резултати

От MongoDB 3.4.9, част от причината за отклонението, което наблюдавате, е, че $sample разчита почти изцяло на внедряването на случаен курсор на системата за съхранение (вижте SERVER-19183 ). Това се прави така, че $sample може да бъде ефективна, когато колекцията съдържа много данни. Въпреки това, тъй като механизмът за съхранение съхранява документи в сортиран ред, използвайки реализация от тип B-дърво, не винаги е възможно да се създаде наистина случаен резултат.

В момента има две искания за функции за по-добро $sample механика, а именно SERVER-22069 и SERVER-22068 .

Като каза това, ако се нуждаете от наистина безпристрастни проби от вашите данни, превъртете свой собствен $sample -like решение вероятно е най-добрият начин да продължите в този момент. Нещо като:

  1. Вземете списък с всички _id в колекцията.
  2. Извършете произволна извадка от този списък (напр. с помощта на случаен метод на Python .избор ).
  3. Получете всички съответни документи, като използвате примерния _id , което ще бъде разумно ефективно в зависимост от размера на извадката, който искате, тъй като _id винаги се индексира.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data MongoDB Repository с потребителско име на колекция

  2. Mongodb Atlas:не е упълномощен от администратора да изпълни команда

  3. Дизайн на релационна база данни към дизайн на mongoDB/mongoose

  4. MongoDB документите изтичат твърде скоро (mongoose)

  5. Docker mongo изображение „Връзката е отказана“ от друг контейнер