Neo4j 沿着路径创建新的关系

Neo4j 沿着路径创建新的关系,neo4j,cypher,Neo4j,Cypher,假设此拓扑: create (mbp {name: "MacBookPro"}), (fb {name:"FritzBox"}), (eue {name: "1u1"}), (inet {name:"Internet"}), (mnh {name:"Mannheim"}), (hdb {name:"Heidelberg"}), (stg {name: "Stuttgart"}), (lnd {name:"Lindt"}), (ylo {name:"Ylo"}), (qvin

假设此拓扑:

create
 (mbp {name: "MacBookPro"}),
 (fb {name:"FritzBox"}),
 (eue {name: "1u1"}),
 (inet {name:"Internet"}),
 (mnh {name:"Mannheim"}),
 (hdb {name:"Heidelberg"}),
 (stg {name: "Stuttgart"}),
 (lnd {name:"Lindt"}),
 (ylo {name:"Ylo"}),
 (qvin {name:"Qvin"}),
 (mbp) -[:LNK {bw:100}]->(fb),
 (fb)-[:LNK {bw:32}]->(eue),
 (eue)-[:LNK {bw:10000}]->(inet),
 (inet)-[:LNK {bw:10000}]->(mnh),
 (mnh)-[:LNK {bw:10000}]->(hdb),
 (hdb)-[:LNK {bw:1000}]->(lnd),   // Route option 1
 (mnh)-[:LNK {bw:10000}]->(stg),
 (stg)-[:LNK {bw:10000}]->(lnd),  // Route option 2
 (lnd)-[:LNK {bw:1000}]->(ylo),
 (lnd)-[:LNK {bw:1000}]->(qvin),
 (ylo)-[:LNK {bw:1000}]->(qvin)
我可以使用此查询获取“MacBookPro”和“Ylo”之间的最大带宽路径:

其次是:

match (a)-[r:LNK {session : 1}]->(b) create (a)-[:SESSION_RTP{id:1}]->(b)

是否可以将其压缩为一条语句?

阅读评论后

我知道只有最小bw的路径才应该有与名为
SESSION\u RIP
的关系连接的节点

试试下面

match (s {name:"MacBookPro"}),
  (t {name:"Ylo"}),
   p=allShortestPaths(s-[*]-t)
   with
   p as path,
   reduce( mini=100000,
           r in relationships(p) |
             case when mini < r.bw then mini else r.bw end)
        as maximal_bandwidth
  order by maximal_bandwidth desc limit 1
  with relationships(p) as rels
  foreach (t in rels | 
  foreach (a in [startNode(t)]| 
  foreach (b in [endNode(t)]| 
  CREATE a-[:SESSION_RTP]->b
  )))
match(s{name:“MacBookPro”}),
(名称:“YO”}),
p=所有最短路径(s-[*]-t)
具有
p作为路径,
减少(最小值=100000,
关系中的r(p)|
最小值b
)))

您只想让匹配查询的特定路径中的所有节点通过session\u key连接,对吗?您可以使用“FOREACH(n in relationships(path)| SET n.session\u RTP=“a”)”并向该路径中的每个关系添加一个属性,然后您可以执行“match(a)-[r:LNK{session RPT:“a”]->(b)创建(a)-[r:session RPT]>(b)'我不确定如何将其应用于单个路径。找到解决方案了吗?尝试查询时,我得到以下错误
无效输入's':应为'n/n'(第4行,第57列)“节点(p)作为路径节点,范围(1,计数(节点(p))作为节点长度”
对不起,我对cypher比较陌生,但您建议的解决方案是否会将所有最短路径的所有节点与
会话\u RTP
关系连接起来?我无法证实我的怀疑,因为您的查询不会在我的neo4j 2.0.0上运行。尝试您当前的解决方案会产生:
p未定义(第11行,第28列)“匹配节点中的a(p)”^
错误越来越有趣:
Neo.DatabaseError.Statement.ExecutionFailure
match (a)-[r:LNK {session : 1}]->(b) create (a)-[:SESSION_RTP{id:1}]->(b)
match (s {name:"MacBookPro"}),
  (t {name:"Ylo"}),
   p=allShortestPaths(s-[*]-t)
   with
   p as path,
   reduce( mini=100000,
           r in relationships(p) |
             case when mini < r.bw then mini else r.bw end)
        as maximal_bandwidth
  order by maximal_bandwidth desc limit 1
  with relationships(p) as rels
  foreach (t in rels | 
  foreach (a in [startNode(t)]| 
  foreach (b in [endNode(t)]| 
  CREATE a-[:SESSION_RTP]->b
  )))