【问题标题】:How to apply aggregate functions(like MIN, MAX, COUNT) in JCR-SQL2?如何在 JCR-SQL2 中应用聚合函数(如 MIN、MAX、COUNT)?
【发布时间】:2014-12-11 13:44:18
【问题描述】:

我有一些记录作为节点存储在 JCR 中,节点的名称是主键。例如 1,2,3。 但问题从这里开始,

记录如下1,2,6,53,54

上面的数字是 EMP 非结构化节点下的节点。 如果我这样做了

int count=empNode.getNodeIterator().getSize() 我会得到5个因为有5个节点

所以我做了 count++,它给了我 6,但 6 已经存在,所以我无法在 EMP[nt:unstructred] 下创建名称为 6 的节点,这就是我要应用 MAX(nodeNames) 的原因 查询中的某些内容。我该怎么办?

更新 :: 我使用CQ5.5。 EMP 是 /content/EMP 等内容下的非结构化节点。 在这个(EMP)下,我有非结构化节点来保存我的数据。这些节点的名称为 1,2 等

【问题讨论】:

标签: java aem jcr jcr-sql2


【解决方案1】:

我尝试使用我的 CQ5.4 实例来寻找解决方案。不幸的是,我的尝试没有成功。当我在 Google 中使用关键字“sql2 count”时,我找到了this 页面。有人问了同样的问题,答案是

JCR SQL 1、XPath [2] 中没有 count(*) 或 group by 选择器或 JCR-SQL2/AQM [3].

要实现这样的标签云,您可以运行一个查询来获取所有 您的内容包含相关的“标签”属性:

//元素(*, my:Article)[@tag]

然后遍历结果并计算你的标签 应用程序端通过查看标签属性值并使用一些 hashmap (tagid -> count)。

http://www.day.com/specs/jcr/1.0/(第 8.5 节)

http://www.day.com/specs/jcr/1.0/(第 6.6 节)

http://www.day.com/specs/jcr/2.0/6_Query.html

我认为您可以将此答案连接到 MAX() 和 MIN()。

【讨论】:

  • :: 是不是这个意思。我们获取我们想要的所有记录,然后在 JCR_SQL2 中对其进行迭代?或者我真的必须在 Java 中手动完成吗?或者您是在谈论在 CQ5 中编写程序?最后一个问题很奇怪,但很好奇!
  • 是的,您必须手动操作。幸运的是 java.util.List 包含方法 size()
  • :: 我明白了。但如果你正确地看到我的问题,你就会明白list.size() 对我没有帮助。然而,我设法通过维护一个 CounterTable(节点)来解决它,它跟踪最新使用的整数,而不是执行 list.size() +1 来获取最新的 int 并将其用作主键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2021-02-23
  • 2019-09-21
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多