Neo4j使用当前属性值的正则表达式重命名属性

Eri*_*son 1 neo4j cypher

从我的研究(很多谷歌搜索),我看不出这是可能的,但我认为仍然值得问.我有很多节点,如:

(org:Organization {name: "Organization 1234"})
Run Code Online (Sandbox Code Playgroud)

其中1234可以是任何非负整数.

为了更新数据库以使用新的API,我想重命名集合中的每一个,以便结果看起来像:

(org:Organization {name: "Org_1234"})
Run Code Online (Sandbox Code Playgroud)

所以,我需要在当前属性上使用[0-9] +正则表达式匹配来混搭Org_.

真的,我甚至不知道从哪里开始.我在文档中看到的只是正则表达式可以用作WHERE子句(WHERE n.property =~ {regex})中的谓词.有没有一种方法只使用Cypher,因为我没有使用Java库?

Nic*_*ite 5

假设"组织"和整数之间总是有一个空格,那么只需使用字符串函数就可以轻松地强制执行此操作.

CREATE (:Organization {name:'Organization 1234'}), 
       (:Organization {name:'Organization 5678'})

MATCH (o:Organization)
WITH o, SPLIT(o.name, " ")[1] AS id
SET o.name = "Org_" + id
RETURN o.name
Run Code Online (Sandbox Code Playgroud)

哪个回报

o.name
Org_1234
Org_5678
Run Code Online (Sandbox Code Playgroud)

  • 或许可以将regexp作为过滤器预先添加到仅适用于正确的组织?是的,拆分或子串:)值得一个GraphGist或一个小的AsciiDoc添加到手册.你可以使用[-1] (2认同)