2014-09-02 48 views
0

我有一个图如下。紫色节点(11376 & 11394)是我的根节点,即我的图形从那里开始。Cypher查询匹配图的一个特定路径

现在我想编写一个密码查询,这样我就可以获得节点11376的完整路径,即从开始节点到结束节点(从紫色到黄色)。另外当我说节点11376我不应该得到其他节点11394.我该怎么做。

我想下面的查询,但没有得到期望的输出:

match (hh{id:'11376'})-[*0..2]-(n) return n; 

这是给其他节点以及即11394

下面是Neo4j的grapg:

My graph

所以,如果我编写节点11376的密码匹配查询,我应该得到完整的下面的路径,如下所示。 enter image description here

我该怎么做?

感谢

回答

1

通过使用黄色节点的标签类型,编写查询为:

match path = (hh{id:'11376'})-[*0..3]-(n:YELLOW_NODE_LABEL_TYPE_HERE) 
return path; 

这将返回所有从(node {id:'11376'})经过3跳或更少的路径到任何具有已分配给黄色节点的标签类型的节点。通过第二个紫色节点的路径将不会包含在您的结果中,因为通过两个紫色节点到达另一个黄色节点需要超过三跳。

+0

@凯尔文,非常感谢。你的建议对我非常有帮助,能够看到理想的结果。 – shree11 2014-09-03 11:40:17

0

嗯,你知道会有至少3周跳,所以你可以在查询指定:无需为您无法限制黄节点标签

MATCH p=(hh {id:11376})-[r*3]-(n)) RETURN p 

顺便说一句该路径必须以黄色节点最终使之与上述查询你可能有一些额外的路径

+0

我对不同的层次结构级别节点有不同的标签名称。另外,我试着用你提出的查询,即匹配m =(hh {id:11376}) - [r * 3] - (prop)返回m,但它也给出了其他根节点。但是,如果我在下面的最后一个节点中指定了特定的属性名称,它只会给出排除其他值的路径。查询是'match p =(hh {id:11376}) - () - () - (prop {pname:11392})return p;'。但我想要所有节点和关系的根节点11376. – shree11 2014-09-02 11:53:05

相关问题