Tôi muốn tạo một tính năng phân trang trong Bộ sưu tập của mình. Làm cách nào để tìm tài liệu có vị trí 'bắt đầu' và 'giới hạn' và nhận tổng số tài liệu trong một truy vấn?Cách tạo số trang với mongoose
Trả lời
Bạn không thể có được cả hai kết quả trong một truy vấn; tốt nhất bạn có thể làm là để có được cả hai sử dụng một Mongoose Query
đối tượng:
var query = MyModel.find({});
query.count(function(err, count) {...});
query.skip(5).limit(10).exec('find', function(err, items) {...});
Sử dụng một khuôn khổ kiểm soát dòng chảy như async
để sạch thực hiện chúng song song nếu cần thiết.
UPDATE:
Sử dụng bỏ qua và giới hạn là không tốt cho pagination. Here is the discussion over it.
@Wes Freeman, Đã có câu trả lời hay. Tôi đọc tư thế được liên kết, bạn nên sử dụng truy vấn phạm vi. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}});
OLD ĐÁP (không sử dụng này)
sử dụng một cái gì đó giống như
n = db.students.find().skip(n).limit(10);
//pass n dynamically, so for page 1 it should be 0 , page 2 it should be 10 etc
hơn
tài liệu tại http://www.mongodb.org/display/DOCS/Advanced+Queries
Cảm ơn bạn đã trả lời nhưng cần phải nhận tổng số tài liệu. – Erik
total = db.students.find(). Count() –
Wes Freeman, Đã có câu trả lời hay. Tôi đọc tư thế được liên kết, bạn nên sử dụng truy vấn phạm vi. n = 0; i = n + 10; db.students.find ({"id": {$ gt: n, $ lt: (n + i)}}); –
Nếu bạn dự định có nhiều trang, bạn không nên sử dụng bỏ qua/giới hạn, nhưng thay vì tính phạm vi.
câu trả lờiXem Scott cho một câu hỏi tương tự: MongoDB - paging
Bạn có thể sử dụng plugin Mongoose Paginate:
$ npm install mongoose-paginate
Sau khi ở các tuyến đường hoặc điều khiển của bạn, chỉ cần thêm:
Model.paginate({}, { page: 3, limit: 10 }, function(err, result) {
// result.docs
// result.total
// result.limit - 10
// result.page - 3
// result.pages
});
user.find({_id:{$nin:friends_id},_id:{$ne:userId}},function(err,user_details){
if (err)
res.send(err);
response ={
statusCode:200,
status:true,
values:user_details
}
res.json(response);
}).skip(10).limit(1);
Câu trả lời của bạn có thể đúng, nhưng hãy cố gắng thêm nhiều ngữ cảnh hơn, vào mã của bạn để giúp mọi người có thể tìm kiếm cùng một nội dung. Vui lòng tham khảo [Làm cách nào để viết câu trả lời hay?] (Https://stackoverflow.com/help/how-to-answer) – rmjoia
Vui lòng giải thích mã trong câu trả lời của bạn làm gì để những người có kiến thức thấp trong các công nghệ liên quan có cơ hội hiểu và sử dụng lại nó. – Wndrr
- 1. Cách tạo một số trang với dompdf
- 2. Xử lý lỗi với Mongoose
- 3. Cách tạo kiểu cuộn với trang chính
- 4. Meteor: Tích hợp với Mongoose?
- 5. Tạo mẫu từ đối tượng Schema Mongoose?
- 6. Tạo số trang bằng javascript/jquery?
- 7. Tăng thêm một giá trị với mongoose?
- 8. Chuyển tham số mô hình vào mô hình mongoose
- 9. Đọc tệp với node.js, mongoose, gridfs-stream
- 10. Cập nhật hàng loạt với Mongoose
- 11. Truy vấn với mongoose và ngày
- 12. Quy tắc số nhiều Mongoose (Nodejs) là gì?
- 13. Cách tạo 5 số ngẫu nhiên với tổng số 100
- 14. Tạo chỉ mục đa năng ở Mongoose/MongoDB
- 15. Thông tư tham khảo với mongoose
- 16. Mongoose update/upsert?
- 17. lỗi Mongoose vào việc tạo mẫu (sử dụng Bước)
- 18. Tìm tài liệu MongoDB bằng ObjectId với Mongoose
- 19. Mongoose populate
- 20. Mongoose variable key name
- 21. Mongoose tự động gia tăng
- 22. Mongoose: mở rộng schemas
- 23. Kho lưu trữ như mẫu với Node và mongoose
- 24. Tăng một trường trong bộ sưu tập MongoDB với Mongoose
- 25. Làm cách nào để tạo trang web với trang web mvn: site?
- 26. Tạo hai trang pdf với Imagick
- 27. Tạo trang web IIS với Rake
- 28. Hiển thị số trang với ReportLab
- 29. Cách tạo trang web phù hợp?
- 30. Nodejs/mongoose. cách tiếp cận nào là thích hợp hơn để tạo một tài liệu?
Cảm ơn! Nó hoạt động cho tôi tốt – Erik
Khi tôi chạy này exec trong truy vấn thứ hai trả về giống như đếm ... Liệu chức năng đếm sửa đổi truy vấn ban đầu ?? –
@ZekeAlexandreNierenberg Bạn nói đúng, Zeke; mà phải có thay đổi như một số điểm. Tôi đã cập nhật ví dụ để thêm tham số ''find'' vào lệnh' exec' để làm cho nó hoạt động với Mongoose 3.6.20. – JohnnyHK