我在neo4j中有节点名称,其名称类似于“ abc124”,“ abcd124”,“ xyz678”,“ zxyz678”等
在上面的节点名称中,abc124和abcd124具有相同的编号(ID /帐户编号)-124,因此我需要合并这些具有相同ID /帐户编号的节点。我正在尝试的逻辑是将字母数字节点名称与数字分开,然后使用apoc过程合并节点
我找不到从节点名称中删除字符部分的任何功能
我尝试过Integer,但不起作用
RETURN toInteger('42AB')
所以我的输入节点名称是“ abc124”,“ abcd124”,“ xyz678”,“ zxyz678” 所以我想要的输出节点名称是124,124,678,678 ....
答案 0 :(得分:0)
APOC功能apoc.text.regexGroups可能会有所帮助。
例如:
RETURN TOINTEGER(apoc.text.regexGroups('abc123', '\\d+')[0][0])
返回:
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