Neo 4 j-Cypherクエリー言語-パラメータ

3767 ワード

Cypherはパラメータ付きクエリーをサポートし、開発者がdo string building to create a queryを必要とせず、計画のキャッシュを実行しやすくすることができます.
 
パラメータは、WHERE句のliteralsおよびexpressions、START句またはインデックスクエリのインデックスキー値、ノード/リレーションシップのIDで使用できます.ただし、パラメータはクエリー構造の一部であり、実行計画にコンパイルされるため、属性名には使用できません.
 
パラメータ名はアルファベットと数字の組み合わせのみです
 
以下にJAVAで使用されるパラメータのいくつかの例を示します.
ノードIDパラメータ
1
2
3 Map params = new HashMap(); params.put( "id" , 0 ); ExecutionResult result =  engine .execute( "start n=node({id}) return n.name" , params );
 
ノードオブジェクトパラメータ
1
2
3 Map params = new HashMap(); params.put( "node" , andreasNode ); ExecutionResult result =  engine .execute( "start n=node({node}) return n.name" , params );
 
マルチノードIDパラメータ
1
2
3 Map params = new HashMap(); params.put( "id" , Arrays.asList( 0 , 1 , 2 ) ); ExecutionResult result =  engine.execute( "start n=node({id}) return n.name" , params );
文字列パラメータ
1
2
3
4 Map params = new HashMap(); params.put( "name" , "Johan" ); ExecutionResult result = engine.execute( "start n=node(0,1,2) where n.name = {name} return n" , params );
インデックスキー値パラメータ
1
2
3
4
5
Map params = new HashMap();
params.put( "key", "name" );
params.put( "value", "Michaela" );
ExecutionResult result =
 engine.execute("start n=node:people({key} = {value}) return n", params );
 
索引クエリー・パラメータ
1
2
3
Map params = new HashMap();
params.put( "query", "name:Andreas" );
ExecutionResult result = 
engine.execute("start n=node:people({query}) return n", params );
 
SKIPとLIMITのデジタルパラメータ
1
2
3
4
5 Map params = new HashMap(); params.put( "s" , 1 ); params.put( "l" , 1 ); ExecutionResult result =   engine.execute( "start n=node(0,1,2) return n.name skip {s} limit {l}" , params );
 
正規表現パラメータ
1
2
3
4 Map params = new HashMap(); params.put( "regex" , ".*h.*" ); ExecutionResult result = engine.execute( "start n=node(0,1,2) where n.name =~ {regex} return n.name"   , params);