Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅获取Neo4j中的特定关系类型_Neo4j_Cypher_Graph Databases - Fatal编程技术网

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

仅获取Neo4j中的特定关系类型,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我有一个Person节点具有PersonId属性,还有一个文档节点具有DocumentId属性 我们的关系就像我们在电子邮件中一样 (person)-[:SENT]->(doc) (doc)-[:TO]->(person) (doc)-[:CC]->(person) (doc)-[:BCC]->(person) 现在,当我激发查询时,如所附图像所示,在第二个查询中,第四列的大小函数在第二行给出“1” 你能说说为什么我在那边数到1吗?甚至我也在指定关系类型:TO。如果你

我有一个Person节点具有PersonId属性,还有一个文档节点具有DocumentId属性

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

(person)-[:SENT]->(doc)
(doc)-[:TO]->(person)
(doc)-[:CC]->(person)
(doc)-[:BCC]->(person)
现在,当我激发查询时,如所附图像所示,在第二个查询中,第四列的大小函数在第二行给出“1”

你能说说为什么我在那边数到1吗?甚至我也在指定关系类型:TO。如果你还需要什么,请告诉我

提前感谢。

关系类型(
:TO
)不是
匹配的一部分,而是
返回的一部分。从第二个查询返回的行(路径)与从第一个查询返回的行(路径)完全相同,但您只是返回一个额外的“列”,即与该行对应的一对节点之间的路径数。这对节点是相同的,因此它将给出相同的结果(1)

我想您的图表的相关部分如下所示:

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

  • (第4人)-[:发送]->(文件10)-[:密件抄送]->(第3人)
  • (第4人)-[:发送]->(文件10)-[:发送]->(第3人)
请注意,两行中涉及的节点是如何相同的

现在,对于每个匹配项/行,您将返回文档和该行收件人之间的
:TO
关系的编号,该编号为1,因为文档10和人员3之间显然只有一个
:TO


查询的
返回
部分中的
:TO
,本质上与
匹配
中的
r
关系无关。首先,使用
匹配
检索图形中感兴趣的节点/关系,然后对这些节点/关系执行操作(返回
)。

您看到的行为至少有两种情况:

1) 第4人向第3人发送了2份单据。一个作为
密件抄送
,另一个作为
发送到


2) 从person 4发送到person 3的文档将person 3指定为
BCC
收件人以及
to
收件人。

但问题是,为什么指定行中应该有一个
(d)-[:to]>(rc)
匹配,因为在那一行中,关系类型是
BCC
——而不是
TO
@cybersam:没有谜题<代码>[r]
将匹配从:文档到:人的任何关系;有一个从第4人到第3人的密件抄送,以及一个到,因此两条路径都将匹配。在这两种情况下,你返回的是4和3之间的人的数目,确切地说是1。谢谢你的回答,所以这意味着在返回语句中,它不会考虑关系类型吗?它会准确地返回您要求的内容:文档和收件人之间的
:TO
关系的数量。我更新了我的答案,给出了更详尽的解释。@Jan Van den bosch:谢谢你的解释,在玩了一点之后,我发现如果我在大小列关系中添加“r”,比如
SIZE((d)-(r:TO]->(rc))
,那么它不会给出1个计数,这是我假设的BCC关系。你能解释一下这种行为吗?你使用的是什么版本的neo4j(也许这是一个已经修复的bug)?我无法复制这个问题。你能展示导致这种行为的示例数据吗?没关系,请参阅我的答案,了解可以解释你所看到的行为的两个场景。