Neo4j如何在列表中创建Neo4j中的节点关系?

Neo4j如何在列表中创建Neo4j中的节点关系?,neo4j,cypher,Neo4j,Cypher,我想通过Neo4j中的关系将列表的第一个节点与列表的其他节点连接起来 我的做法是: MATCH (n) WITH n.title AS id, COLLECT(n) as nodes where size(nodes)>1 ,COALESCE(COLLECT(n)) as firstNode UNWIND TAIL(nodes) as x CREATE (firstNode)-[r:Child]->(x) return r 基本上我有一些标题相同的节点。我希望他们团结在一起,通

我想通过Neo4j中的关系将列表的第一个节点与列表的其他节点连接起来

我的做法是:

MATCH (n)
WITH n.title AS id, COLLECT(n) as nodes
where size(nodes)>1 ,COALESCE(COLLECT(n)) as firstNode  
UNWIND TAIL(nodes) as x
CREATE (firstNode)-[r:Child]->(x)
return r
基本上我有一些标题相同的节点。我希望他们团结在一起,通过与列表中的其他节点创建子关系,使其成为同一标题组中的一个元素作为上级。

试试:

MATCH (n)
WITH n.title AS id, collect(n) as nodes
WHERE size(nodes) > 1
WITH nodes[0] as firstNode, nodes[1..] as otherNodes
UNWIND otherNodes as other
CREATE (firstNode)-[r:Child]->(other)

在第二个
WITH
中,我从第二个节点提取第一个节点和一个列表,直到列表的末尾。然后我展开
otherNodes
列表,并在
firstNode
和未展开的节点之间创建所需的关系。

谢谢,它确实有效!如果我想使用多个属性和标题的组合作为collect函数的id,您能帮助我吗?我该怎么做@brunoperes@nikhil024不客气!当然,我可以试着帮你。但你能说得更具体些吗?也许可以举个例子。。。另外,我建议你提出一个新问题,而不是使用评论。这更好,因为整个社区都可以帮助您,解决您的问题的努力可以让其他有同样问题的用户受益。:)