Если возможно, измените формат даты на сортируемую форму, как сказал Глин Берд.Я бы предложил использовать ISO_8601 , это предпочтительнее для JSON (например, Javascript Date.toJSON ).
Если вы не можете изменить свои данные, вы можетесоздайте представление, которое преобразует ваши даты в сортируемый формат.
Пример: поместите в вашу базу данных проектный документ, подобный следующему:
{
_id: '_design/employees',
views: {
by_action_date: {
map: "function (doc) {\n if (doc.effectiveDateOfAction && doc.employeeName) { // filter for employee docs\n var dt = doc.effectiveDateOfAction.split('-'); // parse your date format\n emit(`${dt[2]}-${dt[1]}-${dt[0]}`); // emit iso date as key\n }\n }"
}
}
}
Необходимо указать функцию map
как строка в документе, отформатированная это:
function(doc) {
if (doc.effectiveDateOfAction && doc.employeeName) { // filter for employee docs
var dt = doc.effectiveDateOfAction.split('-'); // parse your date format
emit(`${dt[2]}-${dt[1]}-${dt[0]}`); // emit iso date as key
}
}
Затем вы можете запросить ее, чтобы отсортировать сотрудников:
Используйте параметр include_docs = true
, чтобы включить ваши настоящие документы.
/my-database/_design/employees/_view/by_action_date?include_docs=true
Затем вы также можете использовать параметры startkey
и endkey
для ограничения определенным периодом времени:
/my-database/_design/employees/_view/by_action_date?include_docs=true&startkey="2018-10-01"&endkey="2018-10-31"
Это вернет вам документы TRAN001
и TRAN002
.