На графике есть 3 вершины A, B, C, все они соединяются с вершиной D с ребром E. Теперь у меня есть A B C, как я могу запросить их общую хвостовую вершину D с запросом гремлина?Как запросить общую вершину хвоста вершин в титане?
0
A
ответ
1
Вот один из способов вы можете сделать это - обратите внимание, что я добавил E вершину, которая не была общего с A, B и C:
gremlin> g.addV(id,'A').as('a').
......1> addV(id,'B').as('b').
......2> addV(id,'C').as('c').
......3> addV(id,'D').as('d').
......4> addV(id,'E').as('e').
......5> addE('knows').from('d').to('a').
......6> addE('knows').from('d').to('b').
......7> addE('knows').from('d').to('c').
......8> addE('knows').from('e').to('a').
......9> addE('knows').from('e').to('c').iterate()
gremlin> ids = ['A','B','C']
==>A
==>B
==>C
gremlin> g.V(ids).in().
......1> where(out().id().fold().order().is(eq(ids))).
......2> dedup()
==>v[D]
where()
в основном проходит обратно в головной вершины и собирает их в список идентификаторов, который затем можно сравнить с исходным списком идентификаторов, которые мы использовали для начала обхода. Обратите внимание, что мы полагаемся на идентификатор order()
, чтобы обеспечить равенство списков как:
gremlin> ['A','B','C'] == ['A','C','B']
==>false