1

我试图在 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:path 平等,但我无法真正运行任何东西。

4

1 回答 1

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/上的#6

SELECT 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'
于 2016-02-25T02:54:28.880 回答