我们根据程序的版本创建多个图形(在我的示例中为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
值最低的ProgNode
的RELEASE
关系:
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
。