将"master node"与特定子节点连接



我们根据程序的版本创建多个图形(在我的示例中为A,B(

(:ProgNode {compileUnit:RL105A, nodeKey:100, captureDate:1/1/1} )
(:ProgNode {compileUnit:RL105B}, nodeKey:200,captureDate:2/2/2} ) 

这些扇动成具有数千个节点的完整图形。我们还有一个单节点(:ProgUnit{compileUnit:RL105})这是该程序的"主"节点。我们希望将每个子图的第一个节点(最低节点键(链接到主节点。 我当前的查询如下所示

MATCH (p:ProgNode) where p.compileUnit = 'RL105A' WITH min(p.nodeKey) as low_node 
Match (j:ProgUnit) where j.compileUnit = 'RL105' 
Create (j)-[r:RELEASE]->(p)

A和B最终将是日期,但现在是字母

这(有点(,但它似乎没有将主节点链接到子图,而是创建了一个什么都不是的新节点。

我知道我将不得不运行 2 次才能构建两个链接 (A,B(,这不是问题。

思潮?我在这里做错了什么?

您的WITH子句没有将p作为项包括在内,因此p再次成为未绑定变量。

以下查询应创建与compileUnit以"RL105"开头且nodeKey值最低的ProgNodeRELEASE关系:

MATCH (p:ProgNode) WHERE p.compileUnit STARTS WITH 'RL105'
WITH p ORDER BY p.nodeKey LIMIT 1
MATCH (j:ProgUnit) WHERE j.compileUnit = 'RL105'  
CREATE (j)-[:RELEASE]->(p)

如果需要避免创建重复关系,请使用MERGE而不是CREATE

最新更新