couchbase - 将具有带有“IN”参数的“where”子句的 N1Ql 查询转换为 mapreduce 视图
问题描述
我有一个简单的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)或单个mapreduce
查询?
解决方案
推荐阅读
- javascript - 如何更改值属性的数据类型?
- sql - Oracle JOIN 导致无效的表名
- typescript - 根据参数向对象添加属性
- case - NetSuite 自定义文本公式
- sql-server - 从 SQL Server 表中回收未使用的空间
- python - 芹菜后台进程正在阻止 GitLab 管道退出
- powershell - Out-File 或 Set-Content 格式与控制台输出不同
- godot - 补间 TextureButton / TextureRect 上的纹理。淡出 Image1 同时淡入 Image2
- sql - 执行从函数返回的文本字符串作为查询
- java - 如何使用 findViewById() 方法在 for 循环中动态获取和设置字符串资源?