couchbase - 从 Couchbase N1Q1 查询返回的数组中获取最小值和最大值
问题描述
我有一个返回一组有序文档键的查询。我需要从这个返回的数组中找到最小和最大键。
查询以返回文档键列表:
SELECT RAW META(d).id
FROM `orders` AS d
WHERE META(d).id LIKE 'order:%'
ORDER BY META().id LIMIT 5
输出 :
[
order:1,
order:2,
order:3,
order:4,
order:5
]
我需要从数组中获取最小值,所以我使用以下查询:
SELECT RAW ARRAY_MIN(
SELECT RAW META(d).id
FROM `orders` AS d
WHERE META(d).id LIKE 'order:%'
ORDER BY META().id LIMIT 5)
)
为了获得最大值,我在上述查询中使用了 ARRAY_MAX 函数。
如您所见,我必须触发 2 个查询才能获得最小最大值。
问题:有没有办法在单个查询中从文档键数组中获取最小值和最大值?
解决方案
使用 CTE 或 LET pre 6.5.0
WITH aval AS (SELECT RAW META(d).id
FROM `orders` AS d
WHERE META(d).id LIKE 'order:%'
ORDER BY META().id LIMIT 5)
SELECT ARRAY_MIN(aval) AS min, ARRAY_MAX(aval) AS max;
您也可以使用以下内容,因为您的数组元素已排序。
WITH aval AS (SELECT RAW META(d).id
FROM `orders` AS d
WHERE META(d).id LIKE 'order:%'
ORDER BY META().id LIMIT 5)
SELECT aval[0] AS min, aval[-1] AS max;
推荐阅读
- nginx - 为Beego设置nginx代理配置的正确方法是什么?
- kentico - 来自不同站点的 Kentico 相关页面
- scala - 在 intellij 中不会自动推断 Scala 返回类型
- docker - Drupal 7 升级到 Drupal 8 升级 UI 在使用 docker for windows 时无法连接到 localhost 数据库
- c# - 谁能帮我让这个按钮onclick工作
- arduino - 在进入 void 循环之前等待输入消息
- node.js - 可重用参数 NestJS OpenAPI
- python - 如何理解从字典和集合等不同对象创建 Pandas Dataframe 的完美语法
- python - xlsxwriter 可以画瀑布图吗?
- java - 使用 JPA 框架 EclipseLink/H2 运行 maven 项目时获取 NoClassDefFound