Как искать звездный запрос на AgensGraph? - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу найти шаблон звезды на AgensGraph с помощью CYPHER?

Но шаблон CYPHER представляет только линейный шаблон?

Как найти шаблон звезды на AgensGraph?

Я хочучтобы получить следующий результат запроса.

agens=# create (:v{id:1})-[:e]->(:v{id:2})-[:e]->(:v{id:3});
GRAPH WRITE (INSERT VERTEX 3, INSERT EDGE 2)
agens=# match (n:v{id:2}) create (n)-[:e]->(:v{id:4});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 1)
agens=# match some-pattern
agens-# return n1, r1, n2, r2, n3, r3, n4;
       n1        |        r1         |       n2        |        r2         |       n3        |        r3         |       n4        
-----------------+-------------------+-----------------+-------------------+-----------------+-------------------+-----------------
 v[3.1]{"id": 1} | e[4.1][3.1,3.2]{} | v[3.2]{"id": 2} | e[4.2][3.2,3.3]{} | v[3.3]{"id": 3} | e[4.3][3.2,3.4]{} | v[3.4]{"id": 4}
(1 row)

1 Ответ

0 голосов
/ 29 апреля 2019

Вы можете использовать переменную для поиска по шаблону звезды.

Сначала напишите линейный шаблон при первом совпадении.

И добавить новый шаблон, используя переменную при следующем совпадении.

agens=# match (n1:v{id:1})-[r1:e]->(n2:v{id:2})-[r2:e]->(n3:v{id:3})
agens-# match (n2)-[r3:e]->(n4:v{id:4})
agens-# return n1, r1, n2, r2, n3, r3, n4;
       n1        |        r1         |       n2        |        r2         |       n3        |        r3         |       n4        
-----------------+-------------------+-----------------+-------------------+-----------------+-------------------+-----------------
 v[3.1]{"id": 1} | e[4.1][3.1,3.2]{} | v[3.2]{"id": 2} | e[4.2][3.2,3.3]{} | v[3.3]{"id": 3} | e[4.3][3.2,3.4]{} | v[3.4]{"id": 4}
(1 row)

...