在遍历中排除一个顶点及其子节点 [Gremlin API]
Exclude a vertex and its children in a traversal [Gremlin API]
在我的图中 product
顶点可以有来自另一个 product
顶点的 composed_of
边。
现在,当 select 带有标签 product
的所有顶点时,我试图排除一个顶点及其具有 composed_of
边的子节点。
最初我有要排除的顶点的 ID,但是当 select 将所有 product
顶点合而为一时,我不知道如何排除它及其子节点查询.
种子数据库:
//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'))
现在我希望能够 select product4
和 product5
通过排除 product1 及其具有 composed_of
边缘的子项。
注意:如果此命令不适用于您的 gremlin 控制台,我深表歉意,因为我首先开始使用 cosmosDB 学习 gremlin。
我想这就是你要找的:
g.V().hasLabel('product').where(
__.not(coalesce(
hasId('product1'),
__.in('composed_of').hasId('product1')
))
)
在我的图中 product
顶点可以有来自另一个 product
顶点的 composed_of
边。
现在,当 select 带有标签 product
的所有顶点时,我试图排除一个顶点及其具有 composed_of
边的子节点。
最初我有要排除的顶点的 ID,但是当 select 将所有 product
顶点合而为一时,我不知道如何排除它及其子节点查询.
种子数据库:
//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'))
现在我希望能够 select product4
和 product5
通过排除 product1 及其具有 composed_of
边缘的子项。
注意:如果此命令不适用于您的 gremlin 控制台,我深表歉意,因为我首先开始使用 cosmosDB 学习 gremlin。
我想这就是你要找的:
g.V().hasLabel('product').where(
__.not(coalesce(
hasId('product1'),
__.in('composed_of').hasId('product1')
))
)