跨子节点和父节点查询
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:content
是 cq:PageContent
类型并且 contact
是 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以快速参考。
我有这样的结构 `
/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:content
是 cq:PageContent
类型并且 contact
是 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以快速参考。