Neo4j:cypher查询中的可选关系?

时间:2013-08-09 14:16:03

标签: neo4j

我想我不太明白可选关系在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

但它只返回“家长机构文件”。我是否认为可选关系概念错了?我应该使用两个查询吗?

谢谢!

1 个答案:

答案 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关系不会以任何特定顺序链接。