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
cypher/Neo4j中朋友之间的联系_Neo4j_Cypher - Fatal编程技术网

cypher/Neo4j中朋友之间的联系

cypher/Neo4j中朋友之间的联系,neo4j,cypher,Neo4j,Cypher,我想查询一个图表,基本上人们可以联系其他人 我想运行一个密码查询,它从一个人开始,返回他们联系过的所有人,以及他们之间的任何联系人 这是我开始的问题 start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN * 在neo4j web界面中,返回所有20个节点和32个关系中的Tom、Tom联系的任何人以及Tom联系人之间的任何关系。结果以m,n r(节点,节点,关系)格式输出 但是当我跑的时候 start n =

我想查询一个图表,基本上人们可以联系其他人

我想运行一个密码查询,它从一个人开始,返回他们联系过的所有人,以及他们之间的任何联系人

这是我开始的问题

start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN *
在neo4j web界面中,返回所有20个节点和32个关系中的Tom、Tom联系的任何人以及Tom联系人之间的任何关系。结果以m,n r(节点,节点,关系)格式输出

但是当我跑的时候

start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN count(*)
它说只有26种关系,不包括汤姆的联系人之间的任何关系

我将结果拉入d3.js可视化,因此理想情况下,结果仍将以类似于节点、节点、关系的格式输出(即一行中的每个相关对)

编辑:更多详细信息

我有一个用户可以相互联系的图表。我希望能够查询一个用户,并获得所有他接触过的用户,以及他接触过的用户之间的任何联系。类似于LinkedInMaps

但我需要一种格式的输出,我可以相对直接地在一个应用程序中使用

例如,如果输出有

 (Tom) - (Tom's friend) - (Tom's Friend's Friend)
这将更容易被打破

 (Tom) - (Tom's friend)
 (Tom's Friend) - (Tom's Friend's Friend)
因为这个d3图需要一个Nodes对象和一个Links对象的输入


编辑

从uklas的回答来看,这起作用了

start n = node:node_auto_index(name = "Tom")
MATCH (n)-[r]-(m)
RETURN n as person, m as personas_fr, r
UNION
start n = node:node_auto_index(name = "Tom")
MATCH (a)-[r1]-(n)-[r2]-(m), (a)-[r]-(m)
RETURN a as person, m as personas_fr, r

可能有多种联系关系(汤姆曾多次联系过一些人)。使用
count(*)
聚合这些联系人,它只返回唯一的联系人。只需使用
*
即可返回匹配的所有内容

如果你能写更多关于你的目标,以及你想做什么的话,我也可以补充一些关于如何进行的建议

更新

不幸的是,我不熟悉d3格式,但这可能会有帮助:

    start n = node:node_auto_index(name = "TOM")
    MATCH (n)-[r]-(m)
    RETURN n as person, m as personas_fr
    UNION 
    start n = node:node_auto_index(name = "TOM")
    MATCH (n)-[r]-(m), (m)-[r2]-(m2)
    WHERE Id(n) <> Id(m2)
    RETURN m as person, l as personas_fr

我添加了更多的细节。谢谢你,我以前从未想到过联合。不幸的是,m2似乎由m的所有朋友组成(所以tom的朋友的朋友…),但我只想包括朋友的朋友,他们也是tom的另一个朋友的朋友(所以是不同m的朋友)。。。因此,图表应该只包括tom和他的朋友,还包括他的朋友之间的关系。我对代码做了一个小改动,然后将其添加到原始帖子中。
 (Tom) - (Tom's friend1)
 (Tom) - (Tom's friend2)
 (Tom) - (Tom's friend3)
 (Tom's Friend1) - (Tom's Friend's Friend)
 (Tom's Friend1) - (Tom's Friend's Friend)
 (Tom's Friend1) - (Tom's Friend's Friend)
 (Tom's Friend2) - (Tom's Friend's Friend)
 (Tom's Friend2) - (Tom's Friend's Friend)
 (Tom's Friend3) - (Tom's Friend's Friend)
 (Tom's Friend3) - (Tom's Friend's Friend)