CouchDB: представление NVL() в поле зрения

Я пишу документ Couchdb _design для команды SQL ниже:

SELECT NVL(MAX(NVL(VERSION,0)),0)+1 FROM pricelistdocs WHERE 
PRICE_LIST_ID = ?  AND DELETION_FLAG = 0;

Я придумал функцию просмотра _design ниже во время запуска и возврата значений, но я сомневаюсь, что это правильно и соответствует ожиданиям приведенной выше команды SQL.

function(doc){
 if(doc.PRICE_LIST_ID == "110011"  && doc.DELETION_FLAG == "0" ){
   emit(doc._id, doc.VERSION);
 }
}

Пожалуйста, как я могу добавить функцию NVL() и MAX в мой документ представления _design выше. Любая информация или подсказка приветствуются. Спасибо за ваше время.


person Origin    schedule 26.09.2013    source источник


Ответы (1)


Вы можете написать свою собственную функцию NVL, проверяя существование поля и возвращая 0, если оно не существует.

Для максимальной функциональности вы должны добавить в представление функцию уменьшения. Если вы просто хотите получить максимум, подойдет "reduce": "_max", встроенная функция сокращения.

person Kim Stebel    schedule 26.09.2013