我进行以下查询
neo4j-sh (?)$ start n=node(*) where n.name =~ 'u(.*)' return n;
==> +-----------------------+
==> | n |
==> +-----------------------+
==> | Node[311]{name:"u1"} |
==> | Node[312]{name:"u2"} |
==> | Node[313]{name:"u3"} |
==> | Node[314]{name:"u4"} |
我想添加一个“userId”属性,并在名称键中设置它。我的意思是我想要
==> +-----------------------+
==> | n |
==> +-----------------------+
==> | Node[311]{name:"u1", userId:'1'} |
==> | Node[312]{name:"u2", userId:'2'} |
==> | Node[313]{name:"u3"},userId:'3' |
==> | Node[314]{name:"u4"}, userId:'4' |
现在我需要从n.name中删除数字。 我怎样才能做到这一点?如何从正则表达式中的(。*)获取值?
答案 0 :(得分:1)
你不能在Cypher中做到这一点(据我所知) - 正则表达式只是为了匹配。
如果它前面只有一个字母,你可以使用子字符串:
start n=node(*)
set n.userId = substring(n.name, 1)
答案 1 :(得分:0)
我遇到了同样的问题,所以我开发了一个小小的Neo4j服务器插件,它允许您通过REST API运行正则表达式,并针对字符串节点属性运行匹配/拆分/替换目的。它可以在Neo4j控制台内返回结果或将它们保存到属性中。
看看它,也许你觉得它很有用:https://github.com/mszargar/Regx4Neo
安装只需一分钟,但您必须重新启动Neo4才能使其生效。