Bỏ qua và giới hạn hoạt động như thế nào trong mongodb?

Để giới hạn các bản ghi trong MongoDB, bạn cần sử dụng phương thức limit(). Phương thức chấp nhận một đối số kiểu số, là số lượng tài liệu mà bạn muốn hiển thị

cú pháp

Cú pháp cơ bản của phương thức limit() như sau -

>db.COLLECTION_NAME.find().limit(NUMBER)

Ví dụ

Hãy xem xét bộ sưu tập myycol có dữ liệu sau

{_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"},
{_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"},
{_id : ObjectId("507f191e810c19729de860e3"), title: "Tutorials Point Overview"}

Ví dụ sau sẽ chỉ hiển thị hai tài liệu trong khi truy vấn tài liệu

>db.mycol.find({},{"title":1,_id:0}).limit(2)
{"title":"MongoDB Overview"}
{"title":"NoSQL Overview"}
>

Nếu bạn không chỉ định đối số số trong phương thức limit() thì nó sẽ hiển thị tất cả các tài liệu từ bộ sưu tập

Phương thức bỏ qua MongoDB()

Ngoài phương thức limit(), còn có một phương thức khác là skip() cũng chấp nhận đối số kiểu số và được sử dụng để bỏ qua số lượng tài liệu

Đối tượng con trỏ của MongoDB có một phương thức gọi là skip, theo tài liệu và định nghĩa, điều khiển nơi MongoDB bắt đầu trả về kết quả. Do đó, kết hợp với giới hạn chức năng, người ta có thể dễ dàng có kết quả được phân trang

Tôi đã viết một bài đăng trên blog về cách bạn có thể phân trang nhanh và hiệu quả trong MongoDB

Nhưng trong khi xem qua tài liệu về bỏ qua, có một điều thú vị cần lưu ý. Có một cảnh báo nhỏ trong tài liệu MongoDB, nói rằng

Phương pháp cursor.skip() thường tốn kém vì nó yêu cầu máy chủ đi lại từ đầu bộ sưu tập hoặc chỉ mục để lấy vị trí bù hoặc bỏ qua trước khi bắt đầu trả về kết quả. Là phần bù (e. g. pageNumber ở trên) tăng lên, cursor.skip() sẽ trở nên chậm hơn và sử dụng nhiều CPU hơn. Với các bộ sưu tập lớn hơn, cursor.skip() có thể bị ràng buộc IO

Nói tóm lại, MongoDB phải lặp lại các tài liệu để bỏ qua chúng. Do đó, khi bộ sưu tập hoặc tập kết quả rất lớn và bạn cần bỏ qua các tài liệu để phân trang, lệnh gọi tới

{_id : ObjectId("507f191e810c19729de860e1"), title: "MongoDB Overview"},
{_id : ObjectId("507f191e810c19729de860e2"), title: "NoSQL Overview"},
{_id : ObjectId("507f191e810c19729de860e3"), title: "Tutorials Point Overview"}
1 sẽ rất tốn kém. Khi xem qua mã nguồn của skip, tôi phát hiện ra rằng nó không sử dụng bất kỳ chỉ mục nào và do đó sẽ chậm hơn khi tập kết quả tăng kích thước

Điều này cũng ngụ ý rằng nếu bạn sử dụng skip thì “tốc độ bỏ qua” sẽ không cải thiện ngay cả khi bạn lập chỉ mục trường

Nhưng nếu kích thước của tập kết quả nhỏ thì sao? . Nhưng họ chưa… tại sao?

Bởi vì nó rất hiệu quả và nhanh chóng cho tập kết quả nhỏ hơn. Tôi đã tận dụng cơ hội này để đánh giá chuẩn và so sánh hai cách tiếp cận để phân trang và ở đó tôi phát hiện ra rằng phân trang dựa trên bỏ qua và giới hạn hoạt động tốt cho các tập kết quả nhỏ hơn

Tóm lại, bỏ qua không tệ như người ta nghĩ. Nhưng bạn phải hiểu rõ trường hợp sử dụng của mình để đưa ra quyết định sáng suốt

Trong MongoDB, phương thức limit() giới hạn số lượng bản ghi hoặc tài liệu mà bạn muốn. Về cơ bản, nó xác định giới hạn tối đa của hồ sơ/tài liệu mà bạn muốn. Hay nói cách khác, phương thức này sử dụng trên con trỏ để chỉ định số lượng tài liệu/bản ghi tối đa mà con trỏ sẽ trả về. Chúng ta có thể sử dụng phương thức này sau phương thức find() và find() sẽ cung cấp cho bạn tất cả các bản ghi hoặc tài liệu trong bộ sưu tập. Bạn cũng có thể sử dụng một số điều kiện bên trong tìm kiếm để cung cấp cho bạn kết quả mà bạn muốn

  • Trong phương thức này, chúng tôi chỉ truyền các giá trị số
  • Phương pháp này không được xác định cho các giá trị nhỏ hơn -231 và lớn hơn 231
  • Vượt qua 0 trong phương pháp này (giới hạn (0)) tương đương với không có giới hạn

cú pháp

con trỏ. giới hạn()

Hoặc

db.collectionName.find().limit()

ví dụ

Trong các ví dụ sau, chúng tôi đang làm việc với

cơ sở dữ liệu. chuyên viên máy tính

bộ sưu tập. gfg

Tài liệu. Tám tài liệu chứa nội dung

Bỏ qua và giới hạn hoạt động như thế nào trong mongodb?

Giới hạn hai tài liệu

db.gfg.find().limit(2)

Ở đây, chúng tôi chỉ muốn hai tài liệu đầu tiên trong kết quả. Vì vậy, chúng tôi vượt qua 2 trong phương pháp giới hạn

Bỏ qua và giới hạn hoạt động như thế nào trong mongodb?

Chỉ giới hạn hai tài liệu phù hợp với điều kiện nhất định

db.gfg.find({"content":/c/i}).limit(2)

Ở đây, chúng tôi chỉ muốn hai tài liệu thỏa mãn điều kiện đã cho, tôi. e. , {"Nội dung". /c/i}) trong phương thức find(). Ở đây, nội dung là chính, chúng tôi sẽ kiểm tra xem nó có chứa ký tự 'c' trong chuỗi hay không. /c/ biểu thị rằng chúng tôi đang tìm kiếm các chuỗi chứa ký tự 'c' này và ở cuối /c/i, i biểu thị rằng nó không phân biệt chữ hoa chữ thường

Bỏ qua và giới hạn hoạt động như thế nào trong mongodb?

Chỉ giới hạn ba tài liệu phù hợp với điều kiện nhất định

db.gfg.find({"content":/c/i}).limit(3)

Ở đây, chúng tôi chỉ muốn ba tài liệu thỏa mãn điều kiện đã cho, tôi. e. , {"Nội dung". /c/i}) trong phương thức find(). Ở đây, nội dung là chính, chúng tôi sẽ kiểm tra xem nó có chứa ký tự 'c' trong chuỗi hay không. /c/ biểu thị rằng chúng tôi đang tìm kiếm các chuỗi chứa ký tự 'c' này và ở cuối /c/i, i biểu thị rằng nó không phân biệt chữ hoa chữ thường

Bỏ qua hoạt động như thế nào trong MongoDB?

Trong MongoDB, phương thức skip() sẽ bỏ qua n tài liệu đầu tiên từ kết quả truy vấn , bạn chỉ cần chuyển số . Về cơ bản, nó loại bỏ n tài liệu đầu tiên khỏi tập kết quả.

Giới hạn hoạt động như thế nào trong MongoDB?

Trong MongoDB, phương thức limit() giới hạn số lượng bản ghi hoặc tài liệu mà bạn muốn. Về cơ bản, nó xác định giới hạn tối đa của hồ sơ/tài liệu mà bạn muốn. Hay nói cách khác, phương pháp này sử dụng trên con trỏ để chỉ định số lượng tài liệu/bản ghi tối đa mà con trỏ sẽ trả về .

Bỏ qua và giới hạn trong phân trang là gì?

MongoDB có một cách cực kỳ đơn giản để triển khai phân trang. sử dụng các thao tác bỏ qua và giới hạn trên con trỏ. skip(n) bỏ qua n mục trong một truy vấn, trong khi giới hạn(m) chỉ trả về m mục tiếp theo bắt đầu từ mục thứ n .

Làm thế nào để sử dụng bỏ qua và giới hạn trong cầy mangut?

Trong Mongoose, phương thức bỏ qua() được sử dụng để chỉ định số lượng tài liệu cần bỏ qua . Khi một truy vấn được thực hiện và kết quả truy vấn được trả về, phương thức skip() sẽ bỏ qua n tài liệu đầu tiên được chỉ định và trả về phần còn lại.