首页 > 解决方案 > 路径变量绑定返回重复的节点匹配 - 为什么?

问题描述

CREATE(:ENTRY {name:"alpha"})-[:REL]->(:ENTRY {name:"beta"})<-[:REL]-(:ENTRY {name:"gamma"})

现在,让我们尝试将相同的图形元素作为路径返回:

MATCH p=(:ENTRY {name:"alpha"})-[:REL]->(:ENTRY {name:"beta"})<-[:REL]-(:ENTRY {name:"gamma"})
RETURN p

我们将在表格视图中看到两个“测试版”:

{“名称”:“测试版”},

{“名称”:“测试版”}

但为什么?

标签: neo4jcypher

解决方案


如果您从一个空数据库开始,这可能只是对返回路径时表格结果中显示的内容有些混淆。

您将看到连接节点的关系表示,每个关系表示由 3 部分组成:起始节点(根据路径排序,对于关系方向而言,起始节点不一定是起始节点)、关系的属性,然后是端节点。

所以分解它:

rel1 数据,rel2 数据

翻译为:

rel1 开始,rel1 道具,rel1 结束,rel2 开始,rel2 道具,rel2 结束

翻译为:

alpha 节点道具,rel1 道具,beta 节点道具,beta 节点道具,rel2 道具,gamma 节点道具

模式中关系的属性是空的,这解释了空映射。请注意,对于关系链,上一个关系结束的节点与下一个关系开始的节点相同。这就是为什么您看到 beta 出现两次的原因:


推荐阅读