【发布时间】:2020-08-07 21:29:13
【问题描述】:
背景
我正在运行以下查询(我知道它可能很难阅读,所以我会在之后澄清它在做什么):
SELECT *
FROM `my_bucket` AS a
NEST (
SELECT c.toNode, c.fromNode, d.endDateTime, d.startDateTime
FROM `my_bucket` AS c
JOIN (
SELECT id, customAttributes.endDateTime, customAttributes.startDateTime
FROM `my_bucket`
WHERE type='airNode'
AND customAttributes.endDateTime >= CLOCK_UTC()
AND customAttributes.endDateTime <= DATE_ADD_STR(CLOCK_UTC(), 14, 'day')) AS d ON c.toNode = d.id
AND c.type='relNode') b ON a.id = b.fromNode AND a.type='edNode';
本质上,这里发生的事情是我们从数据库中提取相关的 airNodes,并将它们与 relNodes.toNode = airNodes.id 的 relNodes 连接起来(toNode 和 id 是来自它们各自节点的字段)。然后,我们将这些 relAirNodes 与 edNodes 连接起来,语句返回以下结构:
[ { 'edNode':..., 'relAirNodes':[{...},{...}] },...]
所以本质上,我们得到一个对数组,其中每一对由一个 edNode 和一个 relAirNode 数组组成。
问题
relAirNodes 数组中的每个 relAirNode 都有一个 endTime 和 startTime 字段。有没有办法运行查询,使得返回结果是一个对数组,对的第一个元素是一个 editNode,对的第二个元素是一个单一的结构,数组的最小 startTime relAirNodes 和 relAirNodes 数组的最大 endTime? 换句话说,返回对象如下所示:
[ { 'edNode':..., 'relAirNodes':{'startTime':..., 'endTime':...}}, ...]
【问题讨论】:
标签: sql database couchbase n1ql