'AEM JCR SQL2 query to find all pages contains specific component
I wish to build a sql2 jcr query to find all pages under /content
that contains this component, e.g /apps/platform/aem-core/components/content/form/form
I read https://wiki.magnolia-cms.com/display/WIKI/JCR+Query+Cheat+Sheet and tried something like below
My current attempt is something like SELECT * from [cq:Page] AS t WHERE t.contains('/apps/platform/aem-core/components/content/form/form')
But it won't work. Please suggest me a example to find all pages contains this component. Thanks
Solution 1:[1]
As @awd has mentioned in the comments, QueryBuilder
provides better capabilities.
SQL2
however is not that bad, especially for someone with an inclination towards RDBMS !
The below query should fetch all the page paths using the component resourceType.
SELECT * FROM [cq:PageContent] AS s WHERE ISDESCENDANTNODE(s,'/content') AND CONTAINS(s.[sling:resourceType], 'foundation/components/text')
You've got to use square brackets for properties with namespaces in them, for e.g: cq:template, sling:resourceType, etc
Solution 2:[2]
SELECT page.* FROM [cq:Page] AS page INNER JOIN [nt:base] AS component ON ISDESCENDANTNODE(component,page) WHERE ISDESCENDANTNODE(page, '/content') AND component.[sling:resourceType] = '/apps/platform/aem-core/components/content/form/form'
Solution 3:[3]
select * from nt:base where jcr:path like '/content/%' and [sling:resourceType] ='/apps/platform/aem-core/components/content/form/form'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | SubSul |
Solution 2 | |
Solution 3 | Akhil |