Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j:RESTAPI调用以获取整个连通子图_Neo4j_Cypher - Fatal编程技术网

neo4j:RESTAPI调用以获取整个连通子图

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)-

构建一个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;"
我的两个问题:

  • 是否有一种干净的方法来获取唯一节点的列表
  • 这两步法是首选方法吗
  • 同样,数据可能有点重,所以让我们记住这一点

    谢谢你的帮助


    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浏览器在图形模式(而不是行模式)下执行此操作的方式相同。这更清楚吗?谢谢