【发布时间】:2014-09-17 12:52:39
【问题描述】:
我有一个要查询的图表,基本上人们可以联系其他人。
我希望运行一个密码查询,它以一个人开头并返回他们联系过的所有人,以及他们联系人之间的任何联系。
这是我开始的查询
start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN *
在 neo4j Web 界面中,这将返回 Tom、任何与 tom 联系的人以及 tom 联系人之间的任何关系,包括所有 20 个节点和 32 个关系。结果以m,n r(节点,节点,关系)的格式输出
但是当我运行时
start n = node:node_auto_index(name = "TOM") MATCH (n)-[r]-(m) RETURN count(*)
它说只有 26 个关系,不包括汤姆的联系人之间的任何关系。
我将结果提取到 d3.js 可视化中,因此理想情况下,结果仍将以类似于节点、节点、关系的格式输出(即每个相关对在一行上)。
编辑:更多细节
我有一张图表,其中包含可以相互联系的用户。我希望能够查询一个用户并取回他联系过的所有用户,以及他联系过的用户之间的任何联系。类似于 LinkedinLabs Inmaps
但我需要一种可以在d3 forced directed 中相对直接使用的格式的输出。
例如,如果输出有,例如
(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
【问题讨论】: