Очень интересный вопрос, единственный ответ, который я могу придумать, - написать функцию карты, которая выдает в качестве ключа массив, содержащий ключ asc и «противоположность» ключа desc:
emit([doc.ascKey, opposite(doc.descKey)], doc);
противоположная функция должна выполнять итерацию символов клавиши desc, чтобы вычислить их «алфавитную противоположность»;для простоты в ASCII это будет что-то вроде этого фрагмента псевдокода:
var oppositeStr = "";
for (char in str) {
oppositeStr += chr(255 - char);
}
Мое решение просто умозрительно, но также может работать!Может быть, у кого-то есть идея получше?