在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
我在 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