2012-04-04 25 views
6

Tôi biết rằng thông qua API REST, người ta có thể chỉ định tham số 'giới hạn' (ví dụ: giới hạn = 5) để giới hạn số kết quả được trả về từ một chế độ xem đã cho trong CouchDB.Sử dụng tham số 'giới hạn' trong hàm CouchDB Xem Bản đồ

Câu hỏi của tôi là liệu có cách nào để thực hiện điều này bên trong chức năng bản đồ bên trong chế độ xem ...?

+3

Bạn có thể cung cấp thêm thông tin không? Bạn muốn làm gì? –

Trả lời

5

Câu trả lời cho câu hỏi cụ thể của bạn là "không".

Chức năng bản đồ được áp dụng cho mọi tài liệu trong cơ sở dữ liệu và chức năng giảm, nếu được xác định, được áp dụng cho mọi kết quả giảm. Hãy suy nghĩ trước khi tính toán.

Các tham số truy vấn bạn cung cấp trong URL được áp dụng cho cây B + mà chức năng MapReduce của bạn được tạo. Ví dụ: nếu bạn nói ?limit=5 thì năm lá còn lại trong cây được sử dụng làm kết quả. Hoặc nếu bạn nói ?limit=5&descending=true thì năm lá phù hợp nhất trong cây được sử dụng làm kết quả.

Tuy nhiên, những gì bạn đang cố gắng thực hiện bằng cách thực hiện ?limit=5 trong chức năng Bản đồ có thể được thực hiện theo cách khác. Ví dụ, ứng dụng của bạn có thể bao gồm một cái gì đó trong các tài liệu mà làm cho họ có được điều kiện có trong kết quả. Hoặc thực thi rằng chỉ có năm tài liệu được gắn cờ để có trong chỉ mục, mặc dù điều đó sẽ rườm rà và, tùy thuộc vào kích thước cơ sở dữ liệu của bạn, tốn kém.

Chúc mừng.

0

Nếu bạn là UUID là tuần tự (bạn có thể kiểm tra cấu hình của bạn cho điều đó), bạn có thể tận dụng điều đó trong và của chính nó để chỉ xem năm tài liệu đầu tiên.

0

Không thể thực hiện chức năng map. Bởi vì bản đồ sẽ giải quyết từng tài liệu một cách riêng biệt và có thể đồng thời trên bất kỳ nút riêng biệt nào. Bạn không thể biết về tài liệu khác tại tất cả

Nhưng tôi nghĩ điều bạn muốn là có thể với reduce. giảm sẽ được chạy sau khi chức năng bản đồ làm tất cả mọi thứ và có tất cả các kết quả hiện tại. Vì vậy, bạn có thể sửa đổi kết quả từ map trong bất kỳ thời trang

một cách đơn giản, bạn có thể sử dụng reduce để hàng nhóm với cùng một chìa khóa, sau đó bạn có thể cắt mỗi nhóm chỉ có 5 kết quả (trong rereduce nếu tôi nhớ nó chính xác)

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