gpt4 book ai didi

Neo4j:条件返回/IF 子句/字符串操作

转载 作者:行者123 更新时间:2023-12-05 03:13:48 28 4
gpt4 key购买 nike

这是 Neo4j: Listing node labels 的延续

我正在构造一个动态 MATCH 语句以返回层次结构并将输出用作 Neo4j JDBC 输入以从 java 方法查询数据:

MATCH p=(:Service)<-[*]-(:Anomaly)
WITH head(nodes(p)) AS Service, p, count(p) AS cnt
RETURN DISTINCT Service.company_id, Service.company_site_id,
"MATCH srvhier=(" +
reduce(labels = "", n IN nodes(p) | labels + labels(n)[0] +
"<-[:BELONGS_TO]-") + ") WHERE Service.company_id = {1} AND
Service.company_site_id = {2} AND Anomaly.name={3} RETURN " +
reduce(labels = "", n IN nodes(p) | labels + labels(n)[0] + ".name,");

输出如下:

MATCH srvhier=(Service<-[:BELONGS_TO]-Category<-[:BELONGS_TO]-SubService<-
[:BELONGS_TO]-Assets<-[:BELONGS_TO]-Anomaly<-[:BELONGS_TO]-) WHERE
Service.company_id = {1} and Service.company_site_id = {21} and
Anomaly.name={3} RETURN Service.name, Category.name, SubService.name,
Assets.name, Anomaly.name,

我遇到的问题:

“BELONGS_TO”附加到我的最后一个节点

第 2 行: Assets <-[:BELONGS_TO]-异常**<-[:BELONGS_TO]-**

是否有可用于删除它的字符串函数(我看过 Substring..)?或者我可以使用带有条件 n=cnt 的 CASE 语句来附加“BELONGS_TO”吗?

我的最后一行仍然存在同样的问题:

第 5 行:Assets.name,Anomaly.name**,** - 我需要删除的附加“,”。

谢谢。

最佳答案

我认为您需要在 reduce 子句中引入一个 case 语句,类似于下面的代码片段。如果该节点不是集合的最后一个元素,则附加 "<-[:BELONGS_TO]-"关系。如果它是最后一个元素,则不要附加它。

...
reduce(labels = "", n IN nodes(p) |
CASE
WHEN n <> nodes(p)[length(nodes(p))-1] THEN
labels + labels(n)[0] + "<-[:BELONGS_TO]-"
ELSE
labels + labels(n)[0]
END
...

关于Neo4j:条件返回/IF 子句/字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com