CQ5 QueryBuilder搜索未按预期工作(当属性不存在时)

时间:2015-01-15 08:32:27

标签: cq5 aem

我试图生成一个查询,该查询将返回属性不存在的路径下的所有页面。

实际上,我希望查询构建器查询将生成以下xpath:/jcr:root/content/site/my/path//element(*, cq:Page)[not(jcr:content/task/@finished)]

对于CQ 5.3,'存在'财产似乎不存在(根据文档:http://docs.adobe.com/docs/en/cq/5-3/javadoc/com/day/cq/search/eval/JcrPropertyPredicateEvaluator.html),但看起来我可以使用' not',所以我尝试了以下两个例子但是在查询调试器中都没有像我期望的那样工作:

1

path=/content/site/my/path
type=cq:Page
property=jcr:content/task/finished
property.operation=not

2

path=/content/site/my/path
type=cq:Page
property=jcr:content/task/finished
property.operation=not
property.value=true

我也看过那些表明这些应该有用的网页,我似乎无法看到任何修补此功能的修补程序(假设它实际上并没有正常工作)。

任何人都可以提供解决方案或指出我出错的地方吗?

使用CQ 5.3,升级到crx 2.2。

干杯

克里斯

2 个答案:

答案 0 :(得分:0)

我希望有一些资源可以帮到你:

非空SQL2(来自6D帖子):

SELECT * FROM [cq:PageContent] WHERE [jcr:title] IS NOT NULL

这意味着您可以将其转换为WHERE [jcr:title] IS NULL

如果使用QueryBuilder谓词,如果该属性为false,则该属性通常不存在(从节点中删除)。请在您的情况下使用CRX-DE lite手动验证并检查节点&它的属性。如果属性确实存在,但其值为false,则:

path=/content/site/my/path
type=cq:Page
property=@jcr:content/task/finished
property.value=false

答案 1 :(得分:0)

对于任何仍在努力的人来说,这就是你如何做到的

path=/content/site/my/path
type=cq:Page
property=jcr:content/task/finished
property.operation=exists
property.value=false