neo4j:REST API调用以获取整个连接的子图

时间:2014-09-11 07:04:32

标签: neo4j cypher

构建一个D3查看器,我想将所有节点连接到一个节点,以及连接这些节点的所有链接。事实上,与默认的neo4j查看器相同......

例如,我有

CREATE (a:Person {name:'a'})
CREATE (b:Person {name:'b'})
CREATE (c:Person {name:'c'})
CREATE (d:Person {name:'d'})
CREATE (a)-[:KNOWS]->(b)
CREATE (a)-[:KNOWS]->(c)
CREATE (b)-[:KNOWS]->(c)
CREATE (c)-[:KNOWS]->(d)

我可以发出一些丑陋的密码查询来给POST调用,但它不能扩展到中等大小的图形(~100k节点,3M关系)。

在neo4j浏览器中发布的查询中,看起来有两个连续的查询:

A)获取连接的节点

MATCH (p:Person {name:'a'})-[l:KNOWS]-(q:Person) RETURN p,q

B)获取这些节点之间存在的链接

"START a = node(185282,185283,185284), b = node(185282,185283,185284)
 MATCH a -[r]-> b
 RETURN r;"

我的两个问题:

  1. 是否有一种获取唯一节点列表的简洁方法?
  2. 这两步方法是首选方法吗?
  3. 同样,数据可能有点沉重,所以让我们牢记这一点

    感谢您的帮助

    亚历

1 个答案:

答案 0 :(得分:0)

您可以将第一个查询的结果传递给第二个查询using WITH以获取“a”人员知道的人员之间的所有连接:

MATCH (p:Person)-[l:KNOWS]-(q:Person)
WHERE p.name = "a"
WITH p,q
MATCH (p)-[r]-(q)
RETURN p,r,q