18.10 パーティション化されたIDを含むPGQL問合せ
PGQLのid()関数を使用して、パーティション化されたIDを取得できます。
PGQLのSELECT問合せ
次に、パーティション化されたIDをPGQLのSELECT
問合せを使用して取得する例をいくつか示します。
g.queryPgql("SELECT id(n) FROM MATCH(n)").print().close()
次のように出力されます。
+-------------+
| id(n) |
+-------------+
| Accounts(2) |
| Accounts(4) |
| Accounts(6) |
+-------------+
g.queryPgql("SELECT n.name FROM MATCH(n) WHERE id(n) = 'Accounts(1)'").print().close()
次のように出力されます。
+-------+
| name |
+-------+
| User1 |
+-------+
g.queryPgql("SELECT LABEL(n), n.name from MATCH(n) WHERE n.id = 1").print().close()
次のように出力されます。
+------------------+
| label(n) | name |
+------------------+
| Accounts | User1 |
+------------------+
PGXでは、一定時間で頂点を取得することでWHERE id(n) = 'Accounts(1)'
やWHERE n.id = 1
などの述語を含む問合せを効率的に処理できるように、キーの一意索引が自動的に作成されます。
バインド変数の使用
パーティション化されたIDは、バインド値としてPgxPreparedStatement
に渡すこともできます。
たとえば:
PgxPreparedStatement statement = g.preparePgql("SELECT n.name FROM MATCH (n) WHERE id(n)= ?")
statement.setString(1, "Accounts(1)")
statement.executeQuery().print().close()
次のように出力されます。
+-------+
| name |
+-------+
| User1 |
+-------+
PGQLのINSERT問合せ
INSERT
問合せでは、キー・プロパティが存在する場合はキー・プロパティの値を指定する必要があります。この値は、その後、頂点キーまたはエッジ・キーに使用されます。
たとえば、次のようにINSERT
を実行できます。
g.executePgql("INSERT VERTEX v LABELS (Accounts) PROPERTIES (v.id = 1001, v.name = 'User1001')")
挿入された値は、次のように確認できます。
g.queryPgql("SELECT id(n), n.name FROM MATCH(n) WHERE n.id = 1001").print().close()
次のように出力されます。
+---------------------------+
| id(n) | name |
+---------------------------+
| Accounts(1001) | User1001 |
+---------------------------+
親トピック: グラフ・サーバー(PGX)に対するPGQL問合せの実行