只获取Neo4j中的特定关系类型

Eag*_*Eye 3 neo4j graph-databases cypher

我有一个具有PersonId属性的Person节点和一个具有DocumentId属性的Document节点.

关系就像我们在电子邮件中一样,

(person)-[:SENT]->(doc)
(doc)-[:TO]->(person)
(doc)-[:CC]->(person)
(doc)-[:BCC]->(person)
Run Code Online (Sandbox Code Playgroud)

现在,当我按照附加的图像显示查询时,在第二个查询中,带有SIZE功能的第4列在第2行中给出"1".

在此输入图像描述

你能说为什么我在那里得到1的数量?即使我指定关系类型:TO.需要帮助请叫我.

提前致谢.

Jan*_*sch 5

关系类型(:TO)不是MATCH它的一部分,它是它的一部分RETURN.(路径)从所述第二查询返回的行是完全一样的那些从第一查询返回的,但你简单地返回一个附加的"列",这是路径数(d)-[:TO]->(rc),在一对节点之间的对应于该行.这对节点是相同的,因此它将给出相同的结果(1).

我想你的图表的相关部分看起来像这样:

图形

查询模式的图形(p:Person { PersonId: 4})-[s:SENT]->(d:Document)-[r]->(rc:Person)将返回两个匹配的路径:

  • (person 4)-[:SENT]->(document 10)-[:BCC]->(person 3)
  • (person 4)-[:SENT]->(document 10)-[:TO]->(person 3)

注意两行中涉及的节点是如何相同的.

现在,对于每个匹配/行,您将返回文档与该行的接收者之间的关系:TO,即1,因为:TO文档10和人3之间显然存在单个关系.

:TORETURN您的查询的一部分是不相关的精髓r在你们的关系MATCH.首先,使用a MATCH来检索图形中您感兴趣的节点/关系,然后根据这些节点/关系(the RETURN)进行操作.