View a markdown version of this page

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

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

openCypher 参数化查询示例

Neptune 支持参数化的 openCypher 查询。这样,您就可以通过不同的参数多次使用相同的查询结构。由于查询结构不会变化,Neptune 可以缓存其抽象语法树 (AST),而不必多次解析它。

使用 HTTPS 端点进行的 openCypher 参数化查询示例

以下是在 Neptune openCypher HTTPS 端点上使用参数化查询的示例。查询为:

MATCH (n {name: $name, age: $age}) RETURN n

参数定义如下:

parameters={"name": "john", "age": 20}

你可以像这样提交参数化查询:

Amazon CLI
aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-neptune-endpoint:port \ --open-cypher-query "MATCH (n {name: \$name, age: \$age}) RETURN n" \ --parameters '{"name": "john", "age": 20}'

有关更多信息,请参阅《 Amazon CLI 命令参考》execute-open-cypher-query中的。

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-neptune-endpoint:port', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) response = client.execute_open_cypher_query( openCypherQuery='MATCH (n {name: $name, age: $age}) RETURN n', parameters='{"name": "john", "age": 20}' ) print(response['results'])

有关其他语言 Amazon 的 SDK 示例,请参阅Amazon SDK

awscurl
awscurl https://your-neptune-endpoint:port/openCypher \ --region us-east-1 \ --service neptune-db \ -X POST \ -d "query=MATCH (n {name: \$name, age: \$age}) RETURN n" \ -d 'parameters={"name": "john", "age": 20}'
注意

此示例假设您的 Amazon 证书是在您的环境中配置的。us-east-1替换为 Neptune 集群的区域。

curl

使用 POST

curl https://your-neptune-endpoint:port/openCypher \ -d "query=MATCH (n {name: \$name, age: \$age}) RETURN n" \ -d "parameters={\"name\": \"john\", \"age\": 20}"

使用GET(网址编码):

curl -X GET \ "https://your-neptune-endpoint:port/openCypher?query=MATCH%20%28n%20%7Bname:\$name,age:\$age%7D%29%20RETURN%20n&parameters=%7B%22name%22:%22john%22,%22age%22:20%7D"

使用 DIRECT POST

curl -H "Content-Type: application/opencypher" \ "https://your-neptune-endpoint:port/openCypher?parameters=%7B%22name%22:%22john%22,%22age%22:20%7D" \ -d "MATCH (n {name: \$name, age: \$age}) RETURN n"

使用 Bolt 进行 openCypher 参数化查询的示例

以下是使用 Bolt 协议进行 openCypher 参数化查询的 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("MATCH (n {name: $name, age: $age}) RETURN n", name=name, age=age) with driver.session() as session: # Parameters session.read_transaction(match_name_and_age, "john", 20) driver.close()

以下是使用 Bolt 协议进行 openCypher 参数化查询的 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}) RETURN n"; Result result = driver.session().run(queryString, parameters);