假设我有一个包含如下文档的存储桶:
[
{"topic":..., "event":..., "message":...,"date":......}
.
.
.
]
我如何编写一个查询,将每天特定事件类型的所有消息分组,而不对日期进行硬编码,并且假设我们不知道存储桶中有多少个不同的日期?
我正在考虑先获取不同的日期。 (例如,SELECT DISTINCT(date) FROM bucket
)。
有没有办法循环遍历这些天,将所有具有相同日期的事件放入一个数组中,并将所有数组联合在一起作为一个嵌套数组?
最佳答案
使用聚合查询。
SELECT b.date, ARRAY_AGG(b) AS docs
FROM mybucket AS b
WHERE b.event = "myevent"
GROUP BY b.date ;
如果日期是 ISO-8601 格式使用 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/datefun.html按所需格式对日期函数进行分组。
SELECT DATE_FORMAT_STR(b.date,"1111-11-11") AS day, ARRAY_AGG(b) AS docs
FROM mybucket AS b
WHERE b.event = "myevent"
GROUP BY DATE_FORMAT_STR(b.date,"1111-11-11") ;
关于sql - N1QL/Couchbase - 显示每天产生的所有事件,其中不知道表格中可能有多少不同的日子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66785013/