第一次使用neo4j。这就是我的图表。

中心节点为Job类型,子节点为Word类型。每个单词节点都具有属性word (即Word.word),它等价于附加图像中的节点标签,如"react“、"php”等。
我试图为每个子节点链生成一个连接的Word.word属性值字符串。例如,对于附加的图形,我想返回如下内容:
[ "php", "react js", "javascript", "full stack development", "multithreaded load-balancing reactor engine"]我目前的蛮力方法如下:
match (webdev:Job {name:"Web Developer"}),
(webdev)-[a00:Appearance]->(w1:Word),
(w1)-[a01:Appearance]->(w2:Word),
(w2)-[a02:Appearance]->(w3:Word)
return w1.word + ' ' + w2.word + ' ' + w3.word as name
union
match (webdev:Job {name:"Web Developer"}),
(webdev)-[a00:Appearance]->(w1:Word),
(w1)-[a01:Appearance]->(w2:Word)
where not ((w2)-->())
return w1.word + ' ' + w2.word as name
union
match (webdev:Job {name:"Web Developer"}),
(webdev)-[a00:Appearance]->(w1:Word)
where not ((w1)-->())
return w1.word as name它产生的输出:
["multithreaded load-balancing reactor","full stack development","react js","php","javascript"] 这适用于长度为<= 3的链,但如果长度大于3,则显然会失败。注意,字符串“多线程负载平衡反应器”应该是“多线程负载平衡反应堆引擎”。
我的问题是:如何对所有可变长度的链进行推广?
发布于 2020-08-25 18:57:31
您可以使用变长关系模式:
MATCH p = (:Job {name:"Web Developer"})-[:Appearance*]->(leaf)
WHERE NOT (leaf)-[:Appearance]->()
RETURN REDUCE(s = NODES(p)[1].word, w IN NODES(p)[2..] | s + ' ' + w.word) AS namehttps://stackoverflow.com/questions/63584551
复制相似问题