2012-02-08 17 views
6

bất cứ ai có thể giải thích cho tôi lý do tại sao sau không làm việc:CouchDB Nhóm Level và chính Phạm vi

Giả sử cấu trúc sau đây tài liệu:

{ 
    "_id": "520fb089a6cb538b1843cdf3cca39a15", 
    "_rev": "2-f96c27d19bf6cb10268d6d1c34799931", 
    "type": "nosql", 
    "location": "AZ", 
    "date": "2012/03/01 00:00:00", 
    "amount": 1500 
} 

Và một chức năng Bản đồ được xác định như sau:

function(doc) { 
    var saleDate = new Date(doc.date); 
    emit([doc.location,saleDate.getFullYear(),saleDate.getMonth()+1],doc.amount); 
} 

Và sử dụng chức năng được xây dựng trong _sum cho bộ giảm tốc.

Khi bạn thực hiện điều này (với nhóm = true) bạn sẽ có được kết quả như thế này:

{"rows":[ 
{"key":["AZ",2012,2],"value":224}, 
{"key":["AZ",2012,3],"value":1500}, 
{"key":["WA",2011,12],"value":1965}, 
{"key":["WA",2012,1],"value":358} 
]} 

Bây giờ nếu bạn thay đổi các truy vấn đến một cái gì đó như thế này:

http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2 

Bạn nhận được kết quả như thế này :

{"rows":[ 
{"key":["AZ",2012],"value":1724}, 
{"key":["WA",2011],"value":1965}, 
{"key":["WA",2012],"value":358} 
]} 

vì vậy, với ý nghĩ nếu tôi muốn tìm hiểu tất cả doanh thu trong năm 2011 cho "WA" tôi không thể exe dễ thương như thế này:

http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2&key=["WA",2011] 

Ví dụ này được lấy từ video hữu ích trên băng NoSQL.

http://nosqltapes.com/video/understanding-mapreduce-with-mike-miller

Trả lời

8

Bạn luôn cần phải cung cấp một loạt các phím, vì lọc được thực hiện trên kết quả map 's, không trên reduce.

Ví dụ, các thông số sau nên làm việc (nếu đúng url-mã hóa):

?group_level=2&startkey=["WA",2011]&endkey=["WA",2011,{}] 

Bạn có thể đọc về view collation để hiểu làm thế nào nó hoạt động.

+0

Yep đã hoạt động và có ý nghĩa hơn bây giờ. Cảm ơn bạn đã liên kết đến hướng dẫn ViewCollation. – eggsy84

+1

Tôi giả định rằng nó đã được thực hiện từ kết quả của giai đoạn Giảm nhưng bây giờ hiểu rằng nó được thực hiện từ các kết quả từ hàm Bản đồ. Cảm ơn đã giúp đỡ :) – eggsy84

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