Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 替换MATCH子句中的变量_Neo4j_Spring Data Neo4j 4 - Fatal编程技术网

Neo4j 替换MATCH子句中的变量

Neo4j 替换MATCH子句中的变量,neo4j,spring-data-neo4j-4,Neo4j,Spring Data Neo4j 4,我正在处理一个用例,其中目标节点的标签由用户动态请求。所以我的问题是 匹配(x)-[:{relationship}]->(y:{label}) 我使用的是spring-data-neo4j,我猜它在引擎盖下使用了org.neo4j.ogm.session.session session.query(query, params) 我知道params映射用于在运行时替换params,并出于性能原因使用相同的查询模板。 但是如何使用参数替换MATCH子句中的变量呢。不确定这是否是一个奇怪的用例。但是

我正在处理一个用例,其中目标节点的标签由用户动态请求。所以我的问题是
匹配(x)-[:{relationship}]->(y:{label})
我使用的是spring-data-neo4j,我猜它在引擎盖下使用了
org.neo4j.ogm.session.session

session.query(query, params)
我知道params映射用于在运行时替换params,并出于性能原因使用相同的查询模板。 但是如何使用参数替换
MATCH
子句中的变量呢。不确定这是否是一个奇怪的用例。但是,
{label}
是我根据每个请求获得的

我怎样才能解决这个问题

附言:我可以在查询之前执行
String.format
。有更好的办法吗


干杯

Neo4j不允许参数化标签和关系类型

您可以使用
标签(n)
类型(r)
函数来使用查询参数

MATCH (x)-[r]->(y)
WHERE type(r) = {relationship} AND {label} in labels(y)
...
当存在大量不同类型的关系时,这将表现不佳(Neo4j需要扫描和过滤节点的所有关系,因为
[r:type]
它将只遍历给定类型的关系)


因此,通常最好的选择是在运行时构造查询—只需确保已清理输入值以避免密码注入(类似于SQL注入)。

Neo4j不允许参数化标签和关系类型

您可以使用
标签(n)
类型(r)
函数来使用查询参数

MATCH (x)-[r]->(y)
WHERE type(r) = {relationship} AND {label} in labels(y)
...
当存在大量不同类型的关系时,这将表现不佳(Neo4j需要扫描和过滤节点的所有关系,因为
[r:type]
它将只遍历给定类型的关系)

因此,通常最好的选择是在运行时构造查询——只需确保已清理输入值以避免密码注入(类似于SQL注入)