Преобразование запроса N1Ql с предложением «где» с параметрами «IN» в представления mapreduce - PullRequest
0 голосов
/ 21 июня 2019

У меня есть простой запрос select, для которого уже существует представление mapreduce.

Запрос:

select count(*) from `my-bucket` where type = 'Order' and status = 'CREATED' and timestamp > 1535605294320 and timestamp <= 1535605594320

представление:

function (doc, meta) {
    if (doc._class == "com.myclass.Order"){
        emit([doc.type,doc.status, doc.timestamp], null);
    }   
}

Ключидля запроса представления:

Start key : ["Order","CREATED",1535605294320]  
End key : ["Order","CREATED",1535605594320]

Требование : Теперь мы бы хотели, чтобы это представление поддерживало запрос, имеющий условие IN для параметра status.Также мы хотели бы добавить дополнительные параметры, поддерживающие параметры IN.Пример N1Ql будет выглядеть следующим образом.

select count(*) from `my-bucket` where type = 'Order' and orderType IN ["TYPE-A","TYPE-B","TYPE-C"]and status IN ['CREATED',""READY,"CANCELLED"] and timestamp > MILLIS("2016-05-15T03:59:00Z") and timestamp <= MILLIS("2017-05-15T03:59:00Z")

Как написать запрос на просмотр, чтобы выполнить это?Единственное решение, которое приходит мне в голову, - это запускать несколько (скажем, x) запросов для представлений

where x = m1*m2*....*mn   
AND m1=number of paremeters in first IN clause 
AND n=number of IN clauses.

Есть ли лучшее решение, как выполнение этого запроса в пакетном режиме (с использованием java SDK) или в одном * 1027?* запрос?

...