Диапазон вводит представления CouchDB

Я использую CouchDB для того, чтобы хранить данные о событиях. Каждое событие имеет дату начала / время и дата окончания / время. Я хотел бы создать представление теперь, которое позволяет мне получать список всех событий, которые происходят в определенную дату/время. Но события не имеют сингла датами, они могут скорее передвинуться за несколько дней.

Теперь я не знаю, как я могу отразить, что это, по моему мнению, функционирует. К сожалению, мне нужна гранулярность на мелком уровне, так испускание ключа в течение каждой минуты не могло бы быть допустимым решением. Таким образом, как я могу сделать это?

Заранее спасибо!

8
задан b_erb 20 June 2010 в 12:32
поделиться

2 ответа

Хорошо, в любом случае вот решение! Я только что пообщался с Яном (Ленардтом) из CouchDB, и он сказал мне, что я могу emit () несколько раз на карте. То, чего я не знал до сих пор.

Чтобы упростить себе задачу, я предполагаю, что ваши время окончания и начала уже имеют значения TIMESTAMP. Если нет, вам нужно преобразовать их в свою карту или вообще переключиться на них.

Я также предполагаю, что событие начинается в полную минуту (например, 16:51:00 ), а не в 16:51:23 . То же самое в дату окончания.

Пример документа:

{
    "_id"   : "super-random-id",
    "name"  : "event 1",
    "start" : "TIMESTAMP",
    "end"   : "TIMESTAMP"
}

Вот карта:

function (doc) {
    if (doc.start == undefined || doc.end == undefined) {
        return;
    }
    var current = doc.start;
    while (current <= doc.end) {
        emit(current, doc.id);
        current = current + 60; // increment by 1 minute
    }
}

Тогда можно будет легко запросить с помощью startkey и endkey . Вероятно, вы могли бы добавить сюда _list .

8
ответ дан 5 December 2019 в 14:00
поделиться

Наконец-то я нашел хорошее решение с использованием GeoCouch: http://www.diretto.org/2010/08/efficient-time-based-range-queries-in-couchdb- using-geocouch /

4
ответ дан 5 December 2019 в 14:00
поделиться