为什么Neo4j的父节点和子节点之间存在链接

问题描述

1。我创建了Tweet和TweetLeaf节点,然后使用以下代码创建了空间布局

MERGE (n:Tweet {id:'13084664',title:'A'})

MERGE (cl1:TweetLeaf {id:'13085170',title:'AB',reply_to:'13084664'})

MERGE (cl2:TweetLeaf {id:'13085179',title:'TESTING Team',reply_to:'13085170'})

MERGE (cl2:TweetLeaf {id:'13085352',reply_to:'13085170'})

MERGE (cl4:TweetLeaf {id:'13085443',retweet_to:'13085352'})

MERGE (cl5:TweetLeaf {id:'13085356',retweet_to:'13085352'})

//parent and leaf.....
MATCH (parent:Tweet)
MATCH (c:TweetLeaf)
WHERE NOT (c)-[:reply]->() 
AND parent.id = c.reply_to
WITH parent,c
MERGE (c)-[:reply_to]->(parent)
//RETURN c,parent

//leaf to leaf reply_to.....
MATCH (c1:TweetLeaf)-[]-()
WHERE exists (c1.reply_to)

MATCH (d1:TweetLeaf)
WHERE NOT (d1)-[]->() and exists (d1.reply_to)
AND c1.id = d1.reply_to

WITH c1,d1
MERGE (d1)-[:reply_to]->(c1)
//RETURN c1,d1

//leaf to leaf retweet_to....
MATCH (c2:TweetLeaf)
WHERE exists (c2.retweet_to)
AND NOT (c2)-[]->()

MATCH (d2:TweetLeaf)-[]->()
WHERE d2.id = c2.retweet_to

WITH c2,d2
MERGE (c2)-[:retweet_to]->(d2)
//RETURN c2,d2

2。最终结果应类似于以下屏幕截图

enter image description here

但是,在我的输出中,节点A和节点AB之间没有链接。屏幕截图显示了我的输出

enter image description here

解决方法

您用于生成可视化的查询显然只返回了table1个节点,因此neo4j浏览器仅显示了这些节点。

相反,请尝试使用此查询(该查询返回长度为0或1的所有路径,其中包含TweetLeaf节点):

TweetLeaf

如果存在独立的MATCH p=(:TweetLeaf)-[*0..1]-() RETURN p 节点,则长度为0的路径将没有关系。如果您不关心这种情况,则可以改用TweetLeaf