neo4j:RESTAPI调用以获取整个连通子图
构建一个D3查看器,我希望将所有节点连接到一个,并将所有链接连接到这些节点。事实上,与默认的neo4j查看器中的情况相同 例如,我有neo4j:RESTAPI调用以获取整个连通子图,neo4j,cypher,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)-
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;"
我的两个问题:
Alex您可以通过管道将第一个查询的结果传输到第二个查询,以获取“a”人员知道的人员之间的所有连接:
MATCH (p:Person)-[l:KNOWS]-(q:Person)
WHERE p.name = "a"
WITH p,q
MATCH (p)-[r]-(q)
RETURN p,r,q
嗨,麦基。谢谢你的回答,但这看起来并没有给我关系b-c,这将是连接到a的节点的图形。出于好奇,这可能很明显,但是你的查询和匹配(p:Person{name:'a'})-[l:KNOWS]-(q:Person)返回p,l,有没有隐藏的性能技巧?区别在于我的查询将返回两个相互认识的人之间的所有关系,而不仅仅是
知道。因此,例如喜欢
,与
结婚等等。这是有道理的。我的问题不清楚,这是有道理的;)嗯。对不起,我不能再帮你了。在你澄清了这个问题之后,你的意图变得显而易见,但我只是不知道一个查询是否可以做到。我很确定不是,但我可能错了。我已经检查了日志,寻找有关浏览器应用程序如何运行的线索,结果发现它还使用了两个独立的查询,与您提供的查询完全相同。所以最好习惯这种情况。请指定这些节点的连接方式以及要检索的连接。您在问题中提出了两个似乎互不相关的问题。使用相同的节点名或显示第一个查询返回并在第二个查询中使用的id。我在下面提供的查询回答了您的获取连接到一个节点的所有节点,以及连接这些节点的所有链接的要求。如果你没有得到你期望的结果,请提出一个精确的问题。如果不够清楚,我很抱歉。我正在寻找检索A-B,A-C,还有B-C。这将是连接到A的节点及其互连链路。与neo4j浏览器在图形模式(而不是行模式)下执行此操作的方式相同。这更清楚吗?谢谢