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

Cách phân trang hiệu quả với MongoDB và ASP.NET MVC

Bạn có thể sử dụng SetLimit trên con trỏ đại diện cho truy vấn. Điều đó sẽ giới hạn kết quả từ MongoDB , không chỉ trong bộ nhớ:

var cursor = collection.FindAll(); // Or any other query.
cursor.SetLimit(50); // Will only return 50.
foreach (var item in cursor)
{
    // Process item.
}

Bạn cũng có thể sử dụng SetSkip để đặt bỏ qua (đáng ngạc nhiên):

cursor.SetSkip(10);

Lưu ý: Bạn phải đặt các thuộc tính đó trên con trỏ trước liệt kê nó. Đặt những thứ sau sẽ không có hiệu lực.

Nhân tiện, ngay cả khi bạn chỉ sử dụng Linq của SkipTake bạn sẽ không truy xuất hàng ngàn tài liệu. MongoDB hàng loạt tự động kết quả theo kích thước (lô đầu tiên khoảng 1mb , phần còn lại là 4mb mỗi) vì vậy bạn sẽ chỉ nhận được lô đầu tiên và lấy 50 tài liệu đầu tiên ra khỏi nó. Thêm trên

Chỉnh sửa: Tôi nghĩ rằng có một số nhầm lẫn về LINQ tại đây:

SkipTake là các phương thức mở rộng trên cả IEnumerable IQueryable . IEnumerable có nghĩa là trong bộ sưu tập bộ nhớ, nhưng IQueryable hoạt động được dịch bởi nhà cung cấp cụ thể (trình điều khiển C # trong trường hợp này). Vì vậy, đoạn mã trên tương đương với:

foreach (var item in collection.AsQueryable().SetLimit(50))
{
    // Process item.
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB C # Driver 'Không tìm thấy con trỏ'

  2. Trường không được công nhận:lỗi 'ntoreturn' trong tài liệumenDB

  3. Có thể truy vấn trực tiếp các tài liệu con bằng mongoose không?

  4. Trường được tạo tự động cho MongoDB bằng Spring Boot

  5. Cách đọc một cặp khóa-giá trị cụ thể từ bộ sưu tập mongodb