我试图在AEM 6.1中查找引用DAM中宽度超过1280像素的图像的页面。我真的很难通过单个JCR_SQL2查询来判断这是否可行。我尝试了许多没有用的东西(尝试从CRXDE查询时得到ParseException),但我认为以下内容稍微传达了我之后的内容,除了我认为我需要一些额外的连接,从cq:Page开始,获取页面而不是实际的图像组件节点:
SELECT s.* from [nt:unstructured] as s
INNER JOIN [dam:Asset] as a on ISSAMENODE(a, s.[fileReference])
WHERE a.[jcr:content/metadata/tiff:ImageWidth] >= 1280
我已尝试加入jcr:路径平等,但我无法获得实际运行的任何内容。
答案 0 :(得分:1)
我相信你不需要加入任何东西来实现你想要的东西。我在crx-de lite“Tools.Query”中测试了以下内容:
查找资产:
SELECT * from [dam:Asset] as a
WHERE a.[jcr:content/metadata/tiff:ImageWidth] >= 1000
查找对资产的引用:
SELECT * FROM [nt:unstructured] AS r
WHERE r.fileReference = '/content/dam/my-images/my-icon.png'
AND ISDESCENDANTNODE(r, '/content') // optimization to reduce query space
大多数联接示例都围绕着父子关系ISCHILDNODE(parent, child)
,这些关系不适用于此用例。不幸的是,到目前为止,将字符串r.fileReference
加入资源a
已经超出了我的研究范围。
我能找到的最接近的例子来自http://labs.6dglobal.com/blog/2014-10-07/9-jcr-sql-2-queries-every-aem-dev-should-know/
上的#6SELECT parent.* FROM [cq:Page] AS parent
INNER JOIN [nt:base] AS child ON ISCHILDNODE(child,parent)
WHERE ISDESCENDANTNODE(parent, '/content') AND child.[cq:template] = '/libs/cq/personalization/templates/campaign'