我想我不太明白可选关系在cypher查询中是如何工作的。
可在此处找到示例数据http://console.neo4j.org/?id=qnyvxb
My insitution-[:PERMISSION]->My institution document
Other insitution-[:PERMISSION]->Other institution document
Parent institution document-[:PERMISSION]->Parent institution document
My Institution-[:ATTACHED_TO]->Parent institution<-[:ATTACHED_TO]-[Other institution
Super user-[:MEMBER_OF]->My Institution
我需要获取超级用户可以访问的文档。我使用过的查询:
START member=node(7)
MATCH (member)-[m:MEMBER_OF]->()-[?:ATTACHED_TO*..5]->()-[p:PERMISSION]->(documents)
RETURN documents.name
但它只返回“家长机构文件”。我是否认为可选关系概念错了?我应该使用两个查询吗?
谢谢!
答案 0 :(得分:0)
您不需要可选关系来解决此问题。尝试:
CYPHER 1.9 START member=node(7)
MATCH member-[:MEMBER_OF]->inst-[:ATTACHED_TO*0..5]-otherinst-[:PERMISSION]->doc
RETURN doc.name
请注意0..5
,因为这包括在查找inst
时发现的第一个doc
成员。我还应该提一下,我已经通过删除>
使附加和权限链接成为多方向,因为您的给定ATTACHED_TO
关系不会以任何特定顺序链接。