2015-11-03 44 views
1

举例来说,我使用的是this site。假设我们想知道Morpheus知道谁,但我们想保留关系的方向。我想a是“从”和b是“到”获取节点的邻居但尊重关系的方向

这将返回所有这三个关系,但方向已丢失:

MATCH (a { name:"Morpheus" })-[]-(b:Crew) RETURN a, b 

此外,睡眠总是a ... DOH 。

取2是让睡眠是ab

MATCH (a:Crew)-[]-(b:Crew) WHERE a.name="Morpheus" OR b.name="Morpheus" 
RETURN a, b 

这将返回我想象的两倍多行。显然[]关系非常随意。

一些洞穴探险之后,我意识到我是专注于错误的东西:

MATCH ({ name:"Morpheus" })-[r:KNOWS]-() 
RETURN startnode(r) AS a, endnode(r) AS b 

该做的伎俩。 3行与尊重方向的关系。

对于在该查询中根本不命名节点,我感到有点不可思议。这感觉就像我是黑客。但是,再次,将节点绑在一起是什么关系。有什么其他方法可以做同样的事情?

回答

2

你应该能够在两种方法相结合:

MATCH (knower:Crew)-[:KNOWS]->(knowee:Crew) 
WHERE knower.name="Morpheus" OR knowee.name="Morpheus" 
RETURN knower, knowee 
+0

啊,我明白了。由于不包括查询中的方向,我使它变得更加困难。 –

+1

我想我的脑子里已经有了Morpheus必须在左边,就像听起来那样疯狂。我想我即将升上一个关卡,这就是我遇到问题的原因。 –

+1

确实;)它确实需要一些头部包装来看看Neo4j将如何匹配比赛的所有潜在排列。 –

相关问题