跨子节点和父节点查询

时间:2015-01-27 22:39:29

标签: cq5 jcr

我有这样的结构 `

/content/mysite/contacts/johnsmith/jcr:content/contact,
/content/mysite/contacts/john2dave/jcr:content/contact,
/content/mysite/contacts/adamwashingto/jcr:content/contact,
/content/mysite/contacts/janesmith/jcr:content/contact`

......等等 /content/mysite/<nameofuser>/jcr:content,有一个名为“pagename”的属性,每个属性都有不同的值。并在 /content/mysite/<nameofuser>/jcr:content/contact,有一个名为“firstname”的属性,当然,每个“firstname”都有自己的名字。

现在我想找到所有'contact'节点,其“firstname”='john'和那些父节点jcr:content的pagename =“abc”。 如何在JCR SQL2中编写此查询?

谢谢。

1 个答案:

答案 0 :(得分:1)

实现它的一种方法是使用JOINS和JCR SQL2的ISCHILDNODE连接条件

假设您的jcr:content类型为cq:PageContentcontact类型为nt:unstructured,则查询将为

SELECT * FROM [cq:PageContent] as parent 
    INNER JOIN [nt:unstructured] as child 
    ON ISCHILDNODE(child, parent) 
    WHERE ISDESCENDANTNODE(parent, '/content/mysite') 
        AND child.firstname = 'john' 
        AND parent.pagename ='abc'

您也可以参考此JCR Query Cheat Sheet进行快速参考。