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 |
+---------------------------+