Исключение вершины и ее дочерних элементов из обхода [Gremlin API]

В моем графе вершина product может иметь composed_of ребро от другой product вершины.

Теперь я пытаюсь исключить вершину и ее дочерние элементы с ребром composed_of при выборе всех вершин с меткой product.

изначально у меня есть идентификатор исключаемой вершины, но я не знаю, как исключить ее и ее дочерние элементы при выборе всех product вершин в одном запросе.

Seed db:

//add product vertex
g.addV('product').property('id', 'product1').property('pk', 'product1');
g.addV('product').property('id', 'product2').property('pk', 'product2');
g.addV('product').property('id', 'product3').property('pk', 'product3');
g.addV('product').property('id', 'product4').property('pk', 'product4');
g.addV('product').property('id', 'product5').property('pk', 'product5');


//add composed_of edge
g.V('product1').addE('composed_of').to(g.V('product2'))
g.V('product1').addE('composed_of').to(g.V('product3'))

теперь я хочу иметь возможность выбирать product4 и product5, исключая product1 и его дочерние элементы с composed_of edge.

примечание: извините, если эти команды не будут работать с вашей консолью gremlin, потому что я впервые начал изучать gremlin с помощью cosmosDB.


person ephraim lambarte    schedule 03.11.2019    source источник


Ответы (1)


Думаю, это то, что вы ищете:

g.V().hasLabel('product').where(
    __.not(coalesce(
         hasId('product1'), 
         __.in('composed_of').hasId('product1')
    ))
)

person noam621    schedule 03.11.2019