提问者:小点点

Gremlin基于只有进出边的顶点识别种群子集


我有一个具有功能的用户的小精灵图。图形的边缘从用户处出来并进入特征。用户没有传入边缘,功能也没有传出边缘。每个用户顶点都有许多向外的边进入特征顶点。

我想找到连接到< code>feature_a和< code>feature_b顶点的女性用户子集。我正在使用< code>gremlinpython,我知道我可以用下面的代码在python中做一些集合交集。gremlin里有办法实现这个吗?

q = '''g.V('feature_a').
        inv().has('gender','Female')'''

res1 = client.submit(q).all().result()

q2 = '''g.V('feature_b').
        inv().has('gender','Female')'''

res2 = client.submit(q2).all().result()


vs_in_common = set(res2).intersection(set(res1)))

共2个答案

匿名用户

Michael发布的内容有效,但它是对图中所有用户的全面扫描(除非< code>gender被索引,但这迟早会导致其他问题)。您应该像下面这样做:

g.V().hasId('feature_a').
  in().has('gender', 'Female').
  filter(out().hasId('feature_b'))

另外,如果可能,在< code>in和< code>out步骤中提供一个边缘标签。

匿名用户

尝试:

 g.V().hasLabel('User').has('gender', 'Female').and(
         __.out().hasId('feature_a'),
         __.out().hasId('feature_b')
         )

似乎您正在寻找 and() 步骤,以便在 gremlin.