我希望构建一个 sql2 jcr 查询来查找
/content
下包含此组件的所有页面,例如 /apps/platform/aem-core/components/content/form/form
我阅读了https://wiki.magnolia-cms.com/display/WIKI/JCR+Query+Cheat+Sheet并尝试了类似下面的内容
我目前的尝试类似于
SELECT * from [cq:Page] AS t WHERE t.contains('/apps/platform/aem-core/components/content/form/form')
但这行不通。请建议我一个示例来查找包含此组件的所有页面。谢谢
正如 @awd 在评论中提到的,
QueryBuilder
提供了更好的功能。
SQL2
不过,这并没有那么糟糕,特别是对于那些倾向于 RDBMS 的人来说!
下面的查询应使用组件资源类型获取所有页面路径。
SELECT * FROM [cq:PageContent] AS WHERE IDESCENDANTNODE(s,'/content') AND CONTAINS(s.[sling:resourceType], '基础/组件/文本')
您必须使用方括号来表示其中包含命名空间的属性,例如:cq:template、sling:resourceType 等
选择页面。* FROM [cq:Page] AS 页面 INNER JOIN [nt:base] AS 组件 ON IDESCENDANTNODE(组件,页面) WHERE IDESCENDANTNODE(页面, '/content') AND 组件.[sling:resourceType] = '/应用程序/平台/aem-core/组件/内容/表单/表单'
从 nt:base 中选择 *,其中 jcr:path 如 '/content/%' 和 [sling:resourceType] ='/apps/platform/aem-core/components/content/form/form'