【发布时间】:2014-04-04 07:53:07
【问题描述】:
我有一个以循环方式建模的链表,如下所示:
(u:User)
-[:LINK]->(a:NODELINK {linkId: 'aa'})
-[:LINK]->(b:NODELINK {linkId: 'bb'})
-[:LINK]->(c:NODELINK {linkId: 'cc'})
-[:LINK]->(d:NODELINK {linkId: 'dd'})
-[:LINK]->(u)
当我从节点 (b:NODELINK {linkId: 'bb'}) 开始查询它时,我想匹配所有节点,直到我到达列表的结尾/开头。 (用户节点)
当我运行以下查询时:
MATCH (u:USER)
WITH u
MATCH (nl:NODELINK)-[:LINK*]->(m)
WHERE nl.linkId = 'bb' AND m <> u
RETURN m
它返回以下节点
(3:NODELINK {linkId:'cc'})
(4:NODELINK {linkId:'dd'})
(1:NODELINK {linkId:'aa'})
(2:NODELINK {linkId:'bb'})
如您所见,我的查询环绕并从列表的开头开始返回节点。我想在用户节点处终止,只返回列表末尾之前的节点
(3:NODELINK {linkId:'cc'})
(4:NODELINK {linkId:'dd'})
我创建了一个图表,demonstrates the issue here
如何查询以从感兴趣的节点链接开始,并在到达用户节点之前返回所有节点?
【问题讨论】: