查询参数
浏览器支持基于参数的查询。它允许 Cypher® 查询规划器重新使用您的查询,而不是解析并构建新的执行计划。
参数可用于
-
字面量和表达式
-
节点和关系 ID
-
属性,当以 动态 方式引用时(更多信息,请参阅 动态计算节点属性的过滤)。
-
节点标签和关系类型,当以 动态 方式引用时(更多信息,请参阅 使用动态节点标签和关系类型的 MATCH)。
参数不能用于以下结构,因为它们是编译为查询计划的查询结构的一部分
-
属性键;
MATCH (n) WHERE n.$param = 'something'是无效的。 -
关系类型;
MATCH (n)-[:$param]→(m)是无效的。 -
节点标签;
MATCH (n:$param)是无效的。
参数可以由字母和数字及其任意组合组成,但不能以数字或货币符号开头。
|
有关 Cypher 参数的更多细节,请参阅 Cypher 手册 → 参数。 |
设置查询参数
您可以通过 参数抽屉({})或使用 :param 命令来设置随查询发送的参数。
:param 命令
您可以使用 :param 命令来设置随查询发送的参数。
:param name => 'Example' 命令定义了一个名为 name 的参数,该参数将在您的查询中一起发送。⇒ 右侧的内容会发送到服务器,并在前面隐式加上 RETURN 后作为 Cypher 求值。这提供了更好的类型安全性,因为 JavaScript 中的某些类型(尤其是数字)很难与 Neo4j 的类型系统匹配。要查看当前所有已设置的查询参数及其值,请使用 :params 命令。有关如何使用这些命令的更多信息,请参阅 :help param 和 :help params。
|
如果您使用多数据库 DBMS,在使用 |
:param x => 1
:param x => 1.0
:param x => "Example"
-
Map
:param obj1 => ({props: {name: "Tom Hanks", born:1956}})obj1 参数$obj1 = {"props": {"name": "Tom Hanks", "born": 1956}}像
{x: 1, y: 2}这样的映射必须用括号括起来({x: 1, y: 2})。 -
列表
:param obj2 => [1, 2, 3, 4]obj2 参数$obj2 = [1, 2, 3, 4]
:param name => 'Tom Hanks';
MATCH (n:Person)
WHERE n.name = $name
RETURN n
|
任何用单引号 (') 或双引号 (") 包裹的参数值都被视为 |