Neo 4 j-Cypherクエリー言語-パラメータ
3767 ワード
Cypherはパラメータ付きクエリーをサポートし、開発者がdo string building to create a queryを必要とせず、計画のキャッシュを実行しやすくすることができます.
パラメータは、WHERE句のliteralsおよびexpressions、START句またはインデックスクエリのインデックスキー値、ノード/リレーションシップのIDで使用できます.ただし、パラメータはクエリー構造の一部であり、実行計画にコンパイルされるため、属性名には使用できません.
パラメータ名はアルファベットと数字の組み合わせのみです
以下にJAVAで使用されるパラメータのいくつかの例を示します.
ノードIDパラメータ
1
2
3
ノードオブジェクトパラメータ
1
2
3
マルチノードIDパラメータ
1
2
3
文字列パラメータ
1
2
3
4
インデックスキー値パラメータ
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
正規表現パラメータ
1
2
3
4
パラメータは、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);