首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cypher:从节点列表中获取相关节点的列表

Cypher:从节点列表中获取相关节点的列表
EN

Stack Overflow用户
提问于 2018-07-04 20:18:55
回答 1查看 71关注 0票数 0

我有一个这样的模型:

enter image description here (变电站为蓝色,安装为黄色)

我匹配从某些变电站到某些变电站的路径。

代码语言:javascript
运行
复制
Match (s1:Substation) - [] - (:installation) - [ :feeds1..40 ] - (:installation) - (s2:Substation)

这将产生一个启动变电站,一个或多个安装,然后是一个关闭变电站的路径(当然还有许多连接的变电站),但在输出中,我只想看到所有连接的变电站。如果安装程序在我的路径中,我如何获得它?

我试着这样做:

代码语言:javascript
运行
复制
with p, filter ( x IN nodes(p) where "ms_installatie" in LABELS(x) ) as installaties,

但这里没有好的答案。

最后,我想要所有变电站的CSV输出“在”一条路径上(不是“在”,这将是很容易的!)

欢迎提出任何建议。

建议查询的简化输出:

代码语言:javascript
运行
复制
[[
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV""nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV","nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV","nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"}
]]

这些实际上是3个路径(当返回路径(p)时显示,参见enter image description here )。我想要的输出是:

代码语言:javascript
运行
复制
[[
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV""nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"}
][
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV","nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"}
][
{"naam":"TILBURG NOORD","nummer":"TBN"},
{"naam":"QUIRIJNSTOK","nummer":"152.6870"},
{"naam":"BP NOORD-OOST TANGEND","nummer":"152.6258"},
{"naam":"VERELST BV","nummer":"152.2020"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"},
{"naam":"L.O.A. A1","nummer":"152.1200A1"}
]]

上一个站点的倍增/三倍是正确的,因为这个站点有3个装置,它们彼此供货。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-04 22:00:32

我不是100%确定这个查询(我不能在你的数据上测试它),但它应该是相当接近的:

代码语言:javascript
运行
复制
MATCH p=(s1:Substation)-->(:installation)-[:feeds*..40 ]-(:installation)<--(s2:Substation)
WITH s1 AS start, s2 AS end, filter(x IN NODES(p) WHERE "ms_installatie" in LABELS(x) ) as installaties
 UNWIND installaties as node
   MATCH (node)<--(ss:Substation)
   WITH start, end, collect(ss) AS ss_on_path
   RETURN [] + start + ss_on_path + end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51173546

复制
相关文章

相似问题

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