Как получить последний документ в ведре Couchbase?

У меня есть ведро активности в моей базе данных дивана, и мне нужно получить последний документ для разных типов. Мой первоначальный подход был таким:

Формат документа: [id, {val.time, val.type, val.load}]

И затем я написал разные представления для карты определенного val.type, и я использовал сокращение, чтобы получить последнюю версию val.time, однако у меня есть проблема с тем, что представления не обновляются (Потому что, по-видимому, карта вызывается только для новых или измененных документов, и это подход требует, чтобы все документы были сопоставлены и сокращены.)

Какова наилучшая практика/подход для временных данных в базах данных Couchbase (NoSQL)?


person user1470618    schedule 19.05.2014    source источник


Ответы (2)


Вы можете получить доступ к документам по времени с помощью простого представления, подобного этому:

  1. Преобразуйте свое время в целочисленное значение. Например, используя метод parse(). http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm

  2. Используйте это целочисленное значение в качестве ключа к вашему представлению. Затем вы можете получить доступ к первому или последнему документу.

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

person Hans    schedule 20.05.2014
comment
Спасибо за ваш ответ, DHK, я думаю, что основная проблема заключается в том, что мое представление будет работать для нескольких документов ‹ 3 , и когда я добавляю документы в свое ведро, представление больше не обновляется. Установка stale=false показывает, что я получаю ошибку типа Cannot read property X of null . Моя функция карты (без сокращения в этом пункте) проверяет неопределенные поля: функция карты работает следующим образом. ‹code›function (doc, meta) { if ( doc.type === диспетчер задач && doc.time ) { emit(parseInt(doc.time),doc); } }‹/код›. Я полностью потерян. - person user1470618; 20.05.2014

Если вы используете проектный документ разработки, ожидается, что добавление новых ключей в корзину может не повлиять на представление. Поскольку только подмножество ключей из корзины входит в конвейер Map/Reduce, добавление ключа, который не входит в подмножество, не приведет к обновлению вашего представления.

Либо оцените его в документе производственного дизайна (нажав кнопку «Опубликовать»), либо попробуйте добавить больше ключей.

person Mickaël Le Baillif    schedule 05.06.2014