【发布时间】:2018-03-02 11:56:41
【问题描述】:
当我有一个看起来像这样的字符串时:
"app-server/src/test/java/de/something/"
我将如何获得任何可能的组合,例如:
app-server/, app-server/src, app-server/src/test, ....
我显然可以用 '/' 分割它,然后我有一个零件数组。我也可以手动附加所有这些,然后过滤null
...
WITH split(package.path,'/')[..size(split(package.path,'/'))-1]
WITH pathParts,
pathParts[0] AS p01,
pathParts[0] + '/' + pathParts[1] AS p02,
pathParts[0] + '/' + pathParts[1] + '/' + pathParts[2] AS p03,
...
另一种选择:
WITH pathParts[0] AS p01,
reduce(s = pathParts[0], x IN pathParts[1..2] | s + '/' + x) + '/' AS p02,
reduce(s = pathParts[0], x IN pathParts[1..3] | s + '/' + x) + '/' AS p03,
reduce(s = pathParts[0], x IN pathParts[1..4] | s + '/' + x) + '/' AS p04,
...
但这些都是可怕的解决方案。
我还想从所有这些中创建父子关系:
(childPackage:Package)-[:HAS_PARENT]->(parentPackage:Package)
例如(app-server/src)-[:HAS_PARENT]->(app-server/)
【问题讨论】:
标签: arrays database graph neo4j cypher