如何使用Neo4j嵌套查询?

时间:2014-04-08 15:46:47

标签: java neo4j nested-query

我试图在Java中进行一种嵌套的Neo4j查询,它首先标记节点的子集,然后尝试匹配它们之间的某些模式。更具体地说,它就像组合这种类型的2个查询:

1 - MATCH(n) - [r:关系* 1..3] - >(m)设m:LABEL

2 - MATCH(p:LABEL) - [r2:RELATIONSHIP] - >(q:OTHERLABEL)其中r2.time< 100返回p,r2,q

有没有办法可以使用Java函数engine.execute()将这两个查询合并为一个?

1 个答案:

答案 0 :(得分:4)

' P'在查询#2中,通常会对应于' m'的超集。在查询#1中。如果这是你的意图,那么以下内容应该有效。请注意,2个MATCH语句没有公共变量,但Cypher语法需要WITH,因此我随意选择了变量&m;#39; m'传递给第二个MATCH(即使它会被忽略)。

MATCH (n)-[r:RELATIONSHIP*1..3]->(m)
SET m:LABEL
WITH m
MATCH (p:LABEL)-[r2:RELATIONSHIP]->(q:OTHERLABEL)
WHERE r2.time<100
RETURN p,r2,q;

如果你想要&#39; m&#39;和&#39; p&#39;完全相同,然后只需更换&#39;(p:LABEL)&#39;与&#39;(m)&#39;:

MATCH (n)-[r:RELATIONSHIP*1..3]->(m)
SET m:LABEL
WITH m
MATCH (m)-[r2:RELATIONSHIP]->(q:OTHERLABEL)
WHERE r2.time<100
RETURN m,r2,q;