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

Cách tìm bản ghi ngẫu nhiên trong Mongoose

Ý tưởng đằng sau việc lấy một bản ghi ngẫu nhiên là truy vấn tất cả các bản ghi phù hợp nhưng chỉ lấy một bản ghi. Đây là những gì findOne() không có bất kỳ tiêu chí nào được đưa ra.

Sau đó, bạn sẽ muốn chọn một mục nhập ngẫu nhiên trong tất cả các trận đấu có thể. Điều này được thực hiện bởi:

  1. Tìm xem có thể có bao nhiêu mục nhập - chúng tôi sử dụng count() trên bộ sưu tập cho điều này. Lưu ý rằng, như đã đề cập trong nhận xét, count không được dùng nữa trong phiên bản 4 và thay vào đó, một tài liệu sẽ sử dụng Số lượng tài liệu ước tính hoặc Số tài liệu ước tính. Sự khác biệt nằm ở độ chính xác / sử dụng bộ nhớ trong số những thứ khác. Đây là một bài đăng SO thảo luận một chút về nó.

  2. Đưa ra một số ngẫu nhiên trong số đếm của chúng tôi.

  3. Sử dụng skip() để "bỏ qua" kết quả phù hợp mong muốn và trả lại kết quả đó.

Đây là một đoạn mã được sửa đổi từ câu trả lời SO này:

// 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. Cách khởi động mongo db trên Windows

  2. Mongo trường A lớn hơn trường B

  3. MongoDB:Cập nhật tài liệu bằng cách sử dụng dữ liệu từ cùng một tài liệu

  4. Khóa ngoại trong mongo?

  5. Nhận tổng số tài liệu với MongoDB khi sử dụng giới hạn