跨子节点和父节点查询

Query across child and parent node

我有这样的结构 `

/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 中编写此查询?

谢谢。

实现它的一种方法是使用 JCR SQL2

JOINS and the ISCHILDNODE 连接条件

假设您的 jcr:contentcq:PageContent 类型并且 contactnt: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以快速参考。