1

次のクエリを作成します

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 から数字を削除する必要があります。これどうやってするの?正規表現で (.*) から値を取得するにはどうすればよいですか?

4

2 に答える 2

1

(私の知る限り)Cypherではそれを行うことはできません-正規表現はマッチングのためだけです。

その前に常に 1 文字だけの場合は、部分文字列を取得できます。

start n=node(*) 
set n.userId = substring(n.name, 1)
于 2013-06-27T19:14:16.560 に答える
0

私は同じ問題を抱えていたので、マッチング/分割/置換の目的で REST API および文字列ノード プロパティに対して正規表現を実行できる小さな Neo4j サーバー プラグインを開発しました。Neo4j コンソール内で結果を返すか、プロパティに保存できます。

それを見てください、多分あなたはそれが役に立つと思うでしょう: https://github.com/mszargar/Regx4Neo

インストールには 1 分ほどかかりますが、有効にするには Neo4j を再起動する必要があります。

于 2014-07-02T16:37:50.937 に答える