MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mẫu ngẫu nhiên từ MongoDB trả về kết quả sai lệch nhiều

Kể từ MongoDB 3.4.9, một phần lý do cho sự thiên vị mà bạn đã quan sát là $sample gần như hoàn toàn dựa vào việc triển khai con trỏ ngẫu nhiên của công cụ lưu trữ (xem SERVER-19183 ). Điều này được thực hiện để $sample có thể hoạt động tốt khi bộ sưu tập chứa nhiều dữ liệu. Tuy nhiên, vì công cụ lưu trữ lưu trữ các tài liệu theo thứ tự được sắp xếp bằng cách sử dụng triển khai kiểu B-tree, nên không phải lúc nào bạn cũng có thể tạo ra một kết quả thực sự ngẫu nhiên.

Hiện có hai yêu cầu tính năng cho $sample tốt hơn cơ học, cụ thể là SERVER-22069 SERVER-22068 .

Phải nói rằng, nếu bạn yêu cầu một mẫu dữ liệu thực sự không thiên vị, hãy sử dụng $sample của riêng bạn -Giải pháp tương tự có thể là cách tốt nhất để tiến hành vào thời điểm này. Một cái gì đó như:

  1. Nhận danh sách tất cả _id trong bộ sưu tập.
  2. Thực hiện lấy mẫu ngẫu nhiên trên danh sách này (ví dụ:sử dụng ngẫu nhiên của Python .choice ).
  3. Lấy tất cả các tài liệu có liên quan bằng cách sử dụng _id được lấy mẫu , sẽ có hiệu suất hợp lý tùy thuộc vào kích thước mẫu bạn muốn, vì _id luôn được lập chỉ mục.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Có thể truy vấn phạm vi băm của một khóa được lập chỉ mục được băm trong mongodb không?

  2. Cách triển khai Cơ sở dữ liệu MongoDB Open edX để có tính khả dụng cao

  3. Bộ mã hóa trình điều khiển Mongodb scala cho các lớp đặc điểm và kế thừa

  4. Sự khác biệt của mongoose và mongoJS là gì? Tôi nên sử dụng cái nào?

  5. Truy vấn và Chèn bằng một lệnh duy nhất