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

Truy vấn phạm vi cho phân trang MongoDB

Bạn hoàn toàn có thể sử dụng ObjectId () mặc dù cú pháp phân trang của bạn sai. Bạn muốn:

 db.tweets.find().limit(50).sort({"_id":-1});

Điều này cho biết bạn muốn các tweet được sắp xếp theo _id giá trị theo thứ tự giảm dần và bạn muốn giá trị gần đây nhất là 50. Vấn đề của bạn là việc phân trang rất phức tạp khi tập kết quả hiện tại đang thay đổi - vì vậy thay vì sử dụng bỏ qua cho trang tiếp theo, bạn muốn ghi chú _id trong tập kết quả (_id gần đây nhất thứ 50 giá trị và sau đó đến trang tiếp theo với:

 db.tweets.find( {_id : { "$lt" : <50th _id> } } ).limit(50).sort({"_id":-1});

Điều này sẽ cung cấp cho bạn các tweet "gần đây nhất" tiếp theo mà không có các tweet mới đến làm rối tung việc phân trang của bạn theo thời gian.

Hoàn toàn không cần phải lo lắng về việc _id giá trị hoàn toàn tương ứng với thứ tự chèn - nó sẽ đủ gần 99,999% và không ai thực sự quan tâm đến cấp phụ thứ hai mà tweet đến trước - bạn thậm chí có thể nhận thấy Twitter thường xuyên hiển thị các tweet không theo thứ tự, nó không quá quan trọng.

Nếu nó quan trọng, thì bạn sẽ phải sử dụng kỹ thuật tương tự nhưng với "ngày tweet", ngày đó sẽ phải là dấu thời gian, thay vì chỉ là một ngày.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ tháng

  2. MongoDB với Mongoid in Rails - Lập chỉ mục không gian địa lý

  3. Hoạt động đẩy trong MongoDB

  4. Đối tượng được nhúng MongoDB không có ID (giá trị null)

  5. Web Scraping và Crawling với Scrapy và MongoDB