0

我正在尝试使用 Neo4j Cypher 制作一个标签系统,并且很难(在过去的 12 个小时里敲我的脑袋)来制作一个递归函数。

假设给定了一个属性数组。

递归函数将: 1. 首先检查根是否具有节点关系 [:b] 与具有属性 'name' 值的节点作为数组中的第一个元素。

一种。如果是,只需将根设置为下一个元素并检查下一个节点是否具有属性 'name 值作为数组中的第二个元素

湾。否则,使用该属性创建一个新节点并将该节点设置为根。

4

1 回答 1

0

此查询将确保names 参数中的名称(字符串列表)由按关系Name按顺序链接在一起的节点表示:b

MERGE (first:Name {name: $names[0]})
FOREACH(i IN RANGE(1, SIZE($names)-1) |
  MERGE (a:Name {name: $names[i-1]})
  MERGE (c:Name {name: $names[i]})
  MERGE (a)-[:b]->(c)
)

第一个MERGE在那里,names只有一个元素的列表仍然会导致创建单个节点(如果需要)。

例如,如果names参数是['aa','bb','cc'],那么生成的路径将如下所示:

在此处输入图像描述

于 2019-06-26T03:09:56.717 回答