OpenPher 参数化查询示例 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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&parameters=%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);