sql - N1QL/Couchbase - 显示每天产生的所有事件,其中不知道表格中可能有多少不同的日子

标签 sql couchbase n1ql

假设我有一个包含如下文档的存储桶:

[
{"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/

相关文章:

sql - 插入命令::错误:列 "value"不存在

sql - 如何找到调用存储过程/函数

linux - 在 Azure Linux RH7.4 VM 上安装/配置 Couchbase 的问题

json - 如何避免 Couchbase 查询中的自动强制转换?

mysql左连接仅选择左表中最高的

mysql - 查找和替换 ## 之间的文本

cassandra - datomic 自托管、分布式存储选项的比较?

views - 在 Couchbase 或 N1QL 中,如何检查数组中的值是否匹配

json - 如何从Couchbase查询深度嵌套的JSON值?

database - Couchbase 5.1 N1QL OR 运算符不使用索引