MongoDB - Lấy ra document mới nhất từ mongodb với độ phức tạp thấp nhất

Mọi người ơi! Em muốn lấy ra document mới nhất được insert vào mongodb một cách nhanh nhất với độ phức tạp thấp nhất thì phải làm như thế nào ạ. Em đã thử cách sort theo thời gian nhưng cách này quá tốn hiệu năng thì sẽ sort cả collection. Mọi người có cách nào tốt hơn để xử lý trong trường hợp này không ạ? Em xin cảm ơn!

Lấy document với _id có timestamp lớn nhất:

.sort({_id:-1}).limit(1)

Field _id luôn được đánh index ngay từ đầu.

4 Likes

Như thế này sẽ phải sắp xếp lại cả collection. Khi collection càng nhiều document thì độ phức tạp càng lớn đúng không ạ. Nếu em muốn có một hệ thống liên tục đọc từ database document mới nhất và collection của database có rất nhiều document thì có chậm ko ạ?

Sài Rethinkdb nha bạn Mongo ko thích hợp mấy kiểu real time.
P/s: à nếu là chỉ là lấy cái vừa mới insert vào thì bạn sài middleware https://mongoosejs.com/docs/middleware.html#post

1 Like

Sort trên _id và lấy limit 1 thì không bao giờ có chuyện sort cả collection nhé. Chưa kể _id là 1 field đặc biệt, được đánh index cũng đặc biệt hơn các field khác.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?