首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cypher:如何获得所有可能的可变长度链和输出节点属性的级联字符串?

Cypher:如何获得所有可能的可变长度链和输出节点属性的级联字符串?
EN

Stack Overflow用户
提问于 2020-08-25 17:53:40
回答 1查看 87关注 0票数 0

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

中心节点为Job类型,子节点为Word类型。每个单词节点都具有属性word (即Word.word),它等价于附加图像中的节点标签,如"react“、"php”等。

我试图为每个子节点链生成一个连接的Word.word属性值字符串。例如,对于附加的图形,我想返回如下内容:

代码语言:javascript
复制
[ "php", "react js", "javascript", "full stack development", "multithreaded load-balancing reactor engine"]

我目前的蛮力方法如下:

代码语言:javascript
复制
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

它产生的输出:

代码语言:javascript
复制
["multithreaded load-balancing reactor","full stack development","react js","php","javascript"] 

这适用于长度为<= 3的链,但如果长度大于3,则显然会失败。注意,字符串“多线程负载平衡反应器”应该是“多线程负载平衡反应堆引擎”。

我的问题是:如何对所有可变长度的链进行推广?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 18:57:31

您可以使用变长关系模式:

代码语言:javascript
复制
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 name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63584551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档