Đầu tiên:
key = [ "Mỹ"] sẽ không hoạt động trên một mảng Key [ "Mỹ", "NY"], nguyên nhân bạn đang tìm kiếm một chìa khóa đó là CHÍNH XÁC [ "Mỹ "]. Thay vào đó, bạn phải sử dụng
startkey=["US"]&endkey=["US",{}]
sau đó những phím đang trong resultset:
["DE","Bavaria","Munich"] <---- NO ! "DE" is out of Range of startkey
["US","FL","Miami"] <---- YES, starts with "US"
["US","NY","New York"] <---- YES, starts with "US"
["VE","XX","Vencuela City"] <---- NO ! "VE" is out of Range of endkey
Cũng làm việc:
startkey=["US","FL"]&endkey=["US","FL",{}]
kết quả:
["DE","Bavaria","Munich"] <---- NO ! "DE" is out of Range of startkey
["US","FL","Miami"] <---- YES, starts with "US","FL"
["US","NY","New York"] <---- NO, "US","NY" is out of Range of endkey
["VE","XX","Vencuela City"] <---- NO ! "VE" is out of Range of endkey
Thứ hai: Bạn không thể có khoảng trống bên trái .. vì vậy bạn phải viết một số phát ra hơn: (bạn không cần phải phát ra mảng mục thứ hai và thứ ba, nếu bạn không cần phải truy vấn nó)
xem "byStateCityCountry":
emit([doc.address.state, doc.address.city,address.country], doc);
xem "byCityStateCountry":
emit([address.city,doc.address.state, doc.address.country], doc);
của chỉ cần đặt một lá cờ ở nơi đầu tiên để xác định loại truy vấn, vì vậy bạn có thể làm tất cả trong một Xem:
emit([1,address.country,doc.address.state, doc.address.city], doc);
emit([2,doc.address.state, doc.address.city,address.country], doc);
emit([3,address.city,doc.address.state, doc.address.country], doc);
Cách sử dụng:
?startkey=[1,"US"]&endkey=[1,"US",{}]
?startkey=[2,"FL"]&endkey=[2,"FL",{}]
?startkey=[3,"Miami"]&endkey=[3,"Miami",{}]
Lưu ý: "Bạn không thể có khoảng trống bên trái ..." - Tôi tin rằng điều ngược lại là đúng nếu bạn đã giảm dần = true – Matt
Tôi biết điều này là cũ, nhưng nó cũng cần lưu ý rằng nếu mảng khóa của bạn có nhiều yếu tố thì phức tạp hơn. giả định dữ liệu sau trong chế độ xem của bạn bằng các phím sau: 'startkey == [a, 11] và endkey == [c, 11]:' '[a, 10], [a, 11] < - startkey, [a, 12], [b, 10], [b, 11], [b, 12], [c, 10], [c, 11] <- endkey, [c, 12] ' (Mọi thứ ở giữa khóa bắt đầu và phím kết thúc sẽ được trả lại.). – AdriVelaz