在neo4j中将具有字母数字名称的节点名称转换为数字

Converting node names with alphanumeric names to numeric in neo4j

我在 neo4j 中的节点名称类似于 "abc124"、"abcd124"、"xyz678"、"zxyz678" 等

在上面的节点名称中,abc124 & abcd124 有相同的编号(ID/accnt 编号)-124,所以我需要合并这些具有相同编号的节点 IDs/accnt。我正在尝试的逻辑是将字母数字节点名称与数字分开,然后使用 apoc 过程合并节点

我找不到任何从节点名称中删除字符部分的函数

我尝试了整数但没有用

RETURN toInteger('42AB')

所以我的输入节点名称是"abc124","abcd124","xyz678","zxyz678" 所以我想要的输出节点名称是 124,124,678,678....

APOC 函数 apoc.text.regexGroups 可能会有帮助。

例如:

RETURN TOINTEGER(apoc.text.regexGroups('abc123', '\d+')[0][0])

returns:

123

[更新]

要合并 Foo 属性以相同数字结尾的 name 节点,您还可以使用 apoc.refactor.mergeNodes 来帮助节点合并(您可能还想指定一些其记录的配置选项,具体取决于您的需要)。

MATCH (f:Foo)
WITH f, TOINTEGER(apoc.text.regexGroups(f.name, '\d+')[0][0]) AS acct
WITH acct, COLLECT(f) AS foos
WHERE SIZE(foos) > 1
CALL apoc.refactor.mergeNodes(foos) YIELD node
RETURN acct