У меня проблема с представлениями в Couch DB (все версии 1.01 - 1.31).Расширенный дневной запрос с CouchDB
Мои данные выглядит следующим образом:
{
"_id": "9a12b7fa4b886640be06f74b814306a6",
"_rev": "1-420c723f8c8f7921ead3df04bfc9ade5",
"client_id": "008",
"day": 1,
"month": 1,
"year": 2013,
"comment": "cool"
}
И я хочу видеть все операции, которые клиент сделал в промежуток времени, позволяет сказать, что 1 месяц:
поэтому моя функция карта, как:
function(doc) {
emit([doc.client_id, doc.day,doc.month, doc.year], doc);
}
Так я запрос с Клавишапуска и EndKey как
http://localhost:5984/test/_design/clients/_view/by_cid_day_month_year?startkey=[%22007%22,1,1,2013]&endkey=[%22007%22,32,1,2013]
Но вместо того, чтобы получать все документы с января с помощью client_id = 007, я получаю все записи, соответствующие 007.
Так что должно быть что-то, что я недопонимаю. Что не так с моим запросом? Как это должно выглядеть?
Мое мышление состоит в том, что я мог бы также просто просматривать журналы с определенной даты или от 1-го янва до 6-го ян.
Я попытался сделать ключи за день, месяц и год в виде строк, но результат всегда один и тот же, или даже иногда странный, как в приведенном выше примере, я найду запись в сентябре (9), но если я пойду в апреле f.ex. Я получаю все записи.
Я этого не понимаю. Это должно быть довольно прямолинейным.
Не моя сильная свита, но не должны вы 'испускают ([doc.client_id, doc.year, doc.month, doc.day], док);' (т.е. наиболее значимым первым), чтобы сделать сравнительная работа? –
Не имеет значения –
Нечетные, с оригиналом, все дни между 1 и 32, поэтому они должны быть включены, прежде чем им придется возвращаться в месяц (т.е. все дни между 1 и 32, независимо от того, какой месяц будет включен, так что все, что соответствует 007). С новым испусканием я не вижу, как это произойдет. –