本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
OpenPher 参数化查询示例
Neptune 支持参数化 OpenPher 查询。这使您可以使用不同的参数多次使用相同的查询结构。由于查询结构没有改变,因此 Neptune 可以缓存其抽象语法树(AST),而不必多次解析它。
使用 HTTPS 终端节点的 OpenPher 参数化查询示例
以下是将参数化查询与 Neptune OpenPher HTTPS 端点结合使用的示例。查询是:
MATCH (n {name: $name, age: $age}) RETURN n
参数定义如下:
parameters={"name": "john", "age": 20}
使用GET
,你可以像这样提交参数化查询:
curl -k \ "https://localhost:8182/openCypher?query=MATCH%20%28n%20%7Bname:\$name,age:\$age%7D%29%20RETURN%20n¶meters=%7B%22name%22:%22john%22,%22age%22:20%7D"
或者,您也可以使用POST
:
curl -k \ https://localhost:8182/openCypher \ -d "query=MATCH (n {name: \$name, age: \$age}) RETURN n" \ -d "parameters={\"name\": \"john\", \"age\": 20}"
或者,使用DIRECT POST
:
curl -k \ -H "Content-Type: application/opencypher" \ "https://localhost:8182/openCypher?parameters=%7B%22name%22:%22john%22,%22age%22:20%7D" \ -d "MATCH (n {name: \$name, age: \$age}) RETURN n"
使用 Bolt 的 OpenPher 参数化查询示例
以下是使用 Bolt 协议的 OpenPher 参数化查询的 Python 示例:
from neo4j import GraphDatabase uri = "bolt://[neptune-endpoint-url]:8182" driver = GraphDatabase.driver(uri, auth=("", "")) def match_name_and_age(tx, name, age): # Parameterized Query tx.run(f"MATCH (n {name: $name, age: $age})", name=name, age=age) with driver.session() as session: # Parameters session.read_transaction(match_name_and_age, "john", 20) driver.close()
以下是使用 Bolt 协议的 OpenPher 参数化查询的 Java 示例:
Driver driver = GraphDatabase.driver("bolt+s://
(your cluster endpoint URL)
:8182"); HashMap<String, Object> parameters = new HashMap<>(); parameters.put("name", "john"); parameters.put("age", 20); String queryString = "MATCH (n {name: $name, age: $age})"; Result result = driver.session().run(queryString, parameters);