6.8.7 PGQL Queries with Partitioned IDs
You can retrieve partitioned IDs using the id()
function in
PGQL.
PGQL SELECT Queries
The following are a few examples to retrieve partitioned IDs using PGQL
SELECT
queries:
g.queryPgql("SELECT id(n) FROM MATCH(n)").print().close()
This prints an output similar to:
+-------------+
| id(n) |
+-------------+
| Accounts(2) |
| Accounts(4) |
| Accounts(6) |
+-------------+
g.queryPgql("SELECT n.name FROM MATCH(n) WHERE id(n) = 'Accounts(1)'").print().close()
The output is printed as shown:
+-------+
| name |
+-------+
| User1 |
+-------+
g.queryPgql("SELECT LABEL(n), n.name from MATCH(n) WHERE n.id = 1").print().close()
The output is printed as shown:
+------------------+
| label(n) | name |
+------------------+
| Accounts | User1 |
+------------------+
PGX automatically creates a unique index for keys so that queries with
predicates such as WHERE id(n) = 'Accounts(1)'
and WHERE
n.id = 1
can be efficiently processed by retrieving the vertex in
constant time.
Using Bind Variables
Partitioned IDs can also be passed as bind values into a
PgxPreparedStatement
.
For example:
PgxPreparedStatement statement = g.preparePgql("SELECT n.name FROM MATCH (n) WHERE id(n)= ?")
statement.setString(1, "Accounts(1)")
statement.executeQuery().print().close()
This prints the output as shown:
+-------+
| name |
+-------+
| User1 |
+-------+
PGQL INSERT Queries
In INSERT
queries, you must provide a value for the key
property if a key property exists. The value is then used for the vertex or edge
key.
For example you can execute an INSERT
as shown:
g.executePgql("INSERT VERTEX v LABELS (Accounts) PROPERTIES (v.id = 1001, v.name = 'User1001')")
The inserted values can be verified as shown:
g.queryPgql("SELECT id(n), n.name FROM MATCH(n) WHERE n.id = 1001").print().close()
This prints the output:
+---------------------------+
| id(n) | name |
+---------------------------+
| Accounts(1001) | User1001 |
+---------------------------+