У меня есть база данных CouchDB с представлением, значения которого являются парными числами вида [x, y].Для документов с одинаковым ключом мне нужно (одновременно) вычислить минимум x и максимум y.База данных, с которой я работаю, содержит около 50000 документов.Построение вида занимает несколько часов, что кажется несколько чрезмерным.(Сами ключи - это массивы длиной три). Ниже я показываю карту и сокращаю функции, но основной вопрос: как я могу ускорить этот процесс?
Обратите внимание, что встроенные функции не будут работать, поскольку значения должны быть числами, а не массивами длины два.Вполне возможно, что я мог бы сделать два разных вида (один для min (x) и один для max (y)), но мне неясно, как их объединить, чтобы получить оба результата одновременно.функция карты в основном выглядит как
function(doc) {
emit ([doc.a, doc.b, doc.c], [doc.x, doc.y])
}
, а моя функция уменьшения выглядит как
function(keys, values) {
var x = null;
var y = null;
for (i = 0; i < values.length; i++) {
if (values[i][0] == null) break;
if (values[i][1] == null) break;
if (x == null) x = values[i][0];
if (y == null) y = values[i][1];
if (values[i][0] < x) x = values[i][0];
if (values[i][1] > y) y = values[i][1];
}
emit([x, y]);
}