gpt4 book ai didi

neo4j - 我可以递归评估 neo4j 密码语言中的树吗?

转载 作者:行者123 更新时间:2023-12-01 10:44:38 25 4
gpt4 key购买 nike

在我的应用程序中,我有本质上是数学表达式的语法树作为 neo4j 图...一张图片可能会有帮助:

expression tree

我想知道是否有可能编写一个 Cypher 查询来为顶级节点完全评估像这样的树,即:

  • 获取节点 1.2 的连接输入的平均值,
  • 1.1.2 的最大值
  • 节点 1.1 的平均值为 1.1.2 和 3
  • 最后返回 1.2 和 1.1 的最大值作为节点 1 的值

该值存储在输入节点的属性 status 中,在 max 和 avg 节点中该值不存在,应该计算。

这是 neo4j 控制台中的全部内容:http://console.neo4j.org/?id=gopwjn

我有一种感觉,使用一些 WITH 和 REDUCE 以及类似的巫术可能是可行的,但我无法将它们完全拼凑在一起。

最佳答案

这是一个似乎可以解决问题的平面解决方案。我尝试了类似 FOREACH (n in range(0,2)....... 但你不能在 foreach 中使用匹配:/所以在这里我更新所有平均节点,然后更新所有最大节点然后重复导致第一个pass 不会填充 avg 的子最大节点。

我希望这至少能为您指明一个有用的方向 :)

MATCH (n1:AVG)-[]-(p1)
WITH AVG(p1.status) AS NEWSTATUS1, n1 AS ND1
MERGE (n1:AVG { name:ND1.name })
ON MATCH SET n1.status=NEWSTATUS1
with 1 as A
MATCH (n2:MAX)-[]-(p2)
WITH MAX(p2.status) AS NEWSTATUS2, n2 AS ND2
MERGE (n2:MAX { name:ND2.name })
ON MATCH SET n2.status=NEWSTATUS2
with 2 as B
MATCH (n3:AVG)-[]-(p3)
WITH AVG(p3.status) AS NEWSTATUS3, n3 AS ND3
MERGE (n3:AVG { name:ND3.name })
ON MATCH SET n3.status=NEWSTATUS3
with 3 as C
MATCH (n4:MAX)-[]-(p4)
WITH MAX(p4.status) AS NEWSTATUS4, n4 AS ND4
MERGE (n4:MAX { name:ND4.name })
ON MATCH SET n4.status=NEWSTATUS4

关于neo4j - 我可以递归评估 neo4j 密码语言中的树吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27849188/

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