У меня есть простой запрос 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?* запрос?