如何使用 gremlin 将所有顶点连接到组中至少两个其他顶点?
How to get all vertices connected to at least two other vertices in a group using gremlin?
我是 GraphDB 的新手,所以如果这很简单,请原谅。
我使用 gremlin 在 Azure CosmosDB 中有两组顶点。分组 a 和 b。 group a的每个顶点最多可以连接到group b的任何顶点一次。我正在寻找 group b 中的每个顶点,这些顶点至少连接到 group a.
中的两个顶点
所以在这个例子中我想取回顶点[b2, b3]
。
万一它是相关的:组 b
中通常会有更多的顶点
从图表创建图表,您可以这样做
g.addV('person').property('group','A').property('name','a1').as('a1').
addV('person').property('group','A').property('name','a2').as('a2').
addV('person').property('group','A').property('name','a3').as('a3').
addV('person').property('group','B').property('name','b1').as('b1').
addV('person').property('group','B').property('name','b2').as('b2').
addV('person').property('group','B').property('name','b3').as('b3').
addV('person').property('group','B').property('name','b4').as('b4').
addE('knows').from('b3').to('a2').
addE('knows').from('b3').to('a3').
addE('knows').from('a2').to('b2').
addE('knows').from('b2').to('a1').
addE('knows').from('a1').to('b1').
addE('knows').from('a3').to('b4').iterate()
gremlin> g.V().has('group','B').
......1> filter(both().has('group','A').count().is(gte(2))).
......2> values('name')
==>b2
==>b3
如果任何顶点有可能有很多连接边,将查询的测试部分更改为可能更有效。
filter(both().has('group','A').limit(2).count().is(2))
我是 GraphDB 的新手,所以如果这很简单,请原谅。
我使用 gremlin 在 Azure CosmosDB 中有两组顶点。分组 a 和 b。 group a的每个顶点最多可以连接到group b的任何顶点一次。我正在寻找 group b 中的每个顶点,这些顶点至少连接到 group a.
中的两个顶点所以在这个例子中我想取回顶点[b2, b3]
。
万一它是相关的:组 b
中通常会有更多的顶点从图表创建图表,您可以这样做
g.addV('person').property('group','A').property('name','a1').as('a1').
addV('person').property('group','A').property('name','a2').as('a2').
addV('person').property('group','A').property('name','a3').as('a3').
addV('person').property('group','B').property('name','b1').as('b1').
addV('person').property('group','B').property('name','b2').as('b2').
addV('person').property('group','B').property('name','b3').as('b3').
addV('person').property('group','B').property('name','b4').as('b4').
addE('knows').from('b3').to('a2').
addE('knows').from('b3').to('a3').
addE('knows').from('a2').to('b2').
addE('knows').from('b2').to('a1').
addE('knows').from('a1').to('b1').
addE('knows').from('a3').to('b4').iterate()
gremlin> g.V().has('group','B').
......1> filter(both().has('group','A').count().is(gte(2))).
......2> values('name')
==>b2
==>b3
如果任何顶点有可能有很多连接边,将查询的测试部分更改为可能更有效。
filter(both().has('group','A').limit(2).count().is(2))