2012-03-23 34 views
13

Tôi đang sử dụng đá quý ruby ​​Mongoid để tương tác với MongoDB và khi tôi cố gắng lấy một cái gì đó từ truy vấn, nó thêm $limit: -1 (tức là số âm) khi tôi mong đợi nó chỉ sử dụng 1. Tôi đã thử làm điều tương tự trong giao diện điều khiển và nó không thay đổi tài liệu nào được trả về.Trong truy vấn MongoDB, giới hạn phủ định có ý nghĩa gì?

Giới hạn phủ định có ý nghĩa gì đó đặc biệt không?

Trả lời

8

Có ghi chú về giới hạn phủ định trong tiêu đề "numberToReturn" trong "OP_QUERY" section of the "Mongo Wire Protocol" documentation.

"Nếu 'giới hạn' người lái xe khách hàng cung cấp chức năng (như LIMIT SQL từ khóa), sau đó nó tùy thuộc vào người lái xe khách hàng để đảm bảo rằng không có nhiều hơn số quy định của tài liệu được trả lại cho sự kêu gọi Nếu numberToReturn là 0, db sẽ sử dụng kích thước trả về mặc định. Nếu số này là số âm, thì cơ sở dữ liệu sẽ trả lại số số đó và đóng con trỏ. Không thể tìm nạp thêm kết quả nào cho truy vấn đó . "

Để biết thêm thông tin về con trỏ và giới hạn, vui lòng xem "Queries and Cursors" documentation, cụ thể là phần "Execution of queries in batches" hiện tại đã xóa.

+0

* Nếu số này là số âm, thì cơ sở dữ liệu sẽ trả lại số đó và đóng con trỏ * - một sự cố xấu xí! –

5

Dấu hiệu của giá trị giới hạn xác định xem 'giới hạn cứng' hay 'giới hạn mềm' của nó. Truy vấn 'giới hạn cứng' (dấu âm) sẽ đóng con trỏ sau khi nó trả về số lượng tài liệu tối đa có thể. 'Giới hạn mềm' giữ con trỏ mở trong trường hợp phản hồi không thể khớp với nhiều tài liệu như được chỉ định bởi giới hạn.

+2

Bạn có bất kỳ tài liệu nào để sao lưu tài khoản này không? Tôi đã không đi qua điều này trước đây. –

+0

Ngoài ra, đó là giới hạn mềm - dương hay âm? – nicholaides

+0

đã cập nhật câu trả lời. sẽ tìm kiếm tham chiếu đến điều này. – Yasser

Các vấn đề liên quan