2017-02-21 9 views

ответ

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