本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
openCypher 參數化查詢的範例
Neptune 支援參數化的 openCypher 查詢。這可讓您搭配不同引數使用相同的查詢結構多次。由於查詢結構不會變更,因此 Neptune 可以快取其抽象語法樹 (AST),而不必多次剖析它。
使用 HTTPS 端點的 openCypher 參數化查詢範例
以下是搭配 Neptune openCypher HTTPS 端點使用參數化查詢的範例。查詢為:
MATCH (n {name: $name, age: $age})
RETURN n
參數定義如下:
parameters={"name": "john", "age": 20}
您可以提交參數化查詢,如下所示:
- AWS 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}'
如需詳細資訊,請參閱《 AWS 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'])
如需其他語言的 AWS SDK 範例,請參閱 AWS 開發套件。
- 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}'
此範例假設您的 AWS 登入資料已在您的環境中設定。將 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(URL 編碼):
curl -X GET \
"https://your-neptune-endpoint:port/openCypher?query=MATCH%20%28n%20%7Bname:\$name,age:\$age%7D%29%20RETURN%20n¶meters=%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);