Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

couchdb query a view with key parameters

Tags:

json

couchdb

Without a key parameter, the view works correctly

$curl "http://127.0.0.1:5984/music/_design/albums/_view/by_release_date"

{"total_rows":311,"offset":0,"rows":[
{"id":"a4327d0718d3b1e227df7124a99a7fc3","key":"1991-12-22","value":{"by":"张楚","title":"黑月亮"}},
{"id":"a4327d0718d3b1e227df7124a99a3ac5","key":"unknown","value":{"by":"郑钧","title":"郑钧:赤裸裸"}},

but when with a key, i got either bad request response or empty result. Why?

$curl "http://127.0.0.1:5984/music/_design/albums/_view/by_release_date?key=unknown" {"error":"bad_request","reason":"invalid_json"}

$curl "http://127.0.0.1:5984/music/_design/albums/_view/by_release_date?key=1993" {"total_rows":311,"offset":0,"rows":[

]}

The map function is:

map
function(doc) {
  key = doc.release_date
  value = {by: doc.author , title: doc.title}
  emit(key, value);
}
like image 316
pierrotlefou Avatar asked Nov 10 '13 07:11

pierrotlefou


2 Answers

The key is a string hence you need to include " = %22, e.g http://127.0.0.1:5984/music/_design/albums/_view/by_release_date?key=%221993%22

like image 192
Daniel Avatar answered Nov 11 '22 05:11

Daniel


I guess you are trying to query key range. Try to specify startkey and endkey:

http://127.0.0.1:5984/music/_design/albums/_view/by_release_date?startkey=1993&endkey=1993z

More details: http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options

like image 20
Antonio Avatar answered Nov 11 '22 04:11

Antonio