2015-07-27 3 views
0

У меня есть база данных с столбцом id и столбцом ts. Мне нужно иметь возможность передавать идентификатор и время начала и окончания времени, чтобы получить все значения за указанный период. Могу ли я сделать это с представлением или мне нужно, чтобы представление возвращало все значения, соответствующие идентификатору? Меня беспокоит то, что я буду возвращать и анализировать намного больше данных, чем я действительно волнуюсь. Вот формат моей БД от моего текущего вида, который просто возвращает все, что соответствует идентификатору ...CouchDB View с несколькими параметрами

{"id":"62db2aa3472dce80b1f2193fc21d52fd","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d52fd","_rev":"1-6aadd58f4f5dabacf6f4f638396246d0","id":"A-Meter-KW","ts":1437969600000,"tz":"New_York","val":"191kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d5100","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d5100","_rev":"1-71155153c0f03c49b02850bee5535e22","id":"A-Meter-KW","ts":1437968700000,"tz":"New_York","val":"190kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d45d7","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d45d7","_rev":"1-661511616958d45fdff3307600d2a9ed","id":"A-Meter-KW","ts":1437967800000,"tz":"New_York","val":"189kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d3c23","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d3c23","_rev":"1-4e97cfc6cb97ddc65f04efd9043b3abd","id":"A-Meter-KW","ts":1437966900000,"tz":"New_York","val":"188kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d2e35","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d2e35","_rev":"1-120298e95c9d2b4b9cdf438836b6c0c0","id":"A-Meter-KW","ts":1437966000000,"tz":"New_York","val":"187kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d22b0","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d22b0","_rev":"1-61e55d02bd8f0c601274b904f46c9f34","id":"A-Meter-KW","ts":1437965100000,"tz":"New_York","val":"186kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d1ce2","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d1ce2","_rev":"1-b4fe80563c70a40981e293af9c6a87b3","id":"A-Meter-KW","ts":1437964200000,"tz":"New_York","val":"185kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d1ccc","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d1ccc","_rev":"1-bdf1881c4270e68e7a7ed90a1d945228","id":"A-Meter-KW","ts":1437963300000,"tz":"New_York","val":"184kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d1303","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d1303","_rev":"1-404d5934fc882aa36e6d355d9a3485ae","id":"A-Meter-KW","ts":1437962400000,"tz":"New_York","val":"183kW"}}, 
{"id":"62db2aa3472dce80b1f2193fc21d0941","key":"A-Meter-KW","value":{"_id":"62db2aa3472dce80b1f2193fc21d0941","_rev":"1-64288d1c98e9b93aa6c546acb1e02078","id":"A-Meter-KW","ts":1437961500000,"tz":"New_York","val":"182kW"}} 
... 

... мой текущий запрос http://localhost:5984/hist/_design/hist/_view/byId?key=%22A-Meter-KW%22&descending=true. Я также хотел бы начать старт и время окончания, что-то вроде http://localhost:5984/hist/_design/hist/_view/byId?key=%22A-Meter-KW%22&descending=true&start=1437963300000&end=1437966000000, но не могу понять, как это сделать.

ответ

1

Редакции: Для того, чтобы Couch, чтобы соответствовать вашему запросу всех данных (например: A-Meter-KW и дата) должен быть в ключе, излучаемое зрением. Так что я думаю, что вы могли бы сделать что-то вроде:

Испустите ([ключ, год, месяц, день], doc._id)

Затем вы можете использовать параметры StartKey и EndKey для фильтрации результаты правильно.

Ссылка: http://guide.couchdb.org/draft/views.html#many

Side соображение: Я бы не использовать свойство «ID» в моих документах, так как он может получить легко спутать с «_id» (обязательно) один.

+0

Добро пожаловать в переполнение стека! Хотя это может ответить на вопрос, [было бы предпочтительно] (http://meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. – IKavanagh

+0

спасибо за предложение, это редактирование соответствующего @IKavanagh? – Davide

+0

Похоже, это может сработать, поэтому я дал свой голос. Тем не менее, я не смог найти решение за время, когда я имел прорезь, и поэтому перенес свои исторические данные в sqlite db. Все мои данные на основе документа все еще работают в CouchDB, но это не очень хорошее решение для временных рядов, исторических данных. Поэтому я не могу подтвердить, что это решение решит мою проблему. Это было давно, но я, кажется, помню, что пытался что-то подобное и имел проблемы с рекурсивными взглядами или что-то в этом роде. –

Смежные вопросы