0

我有一个带有功能的用户的 gremlin 图。图的边缘从用户那里出去并进入特征。用户没有传入边,特征也没有传出边。每个用户顶点都有许多输出边到特征顶点。

我想找到连接到顶点的女性用户子feature_afeature_b。我正在使用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)))
4

2 回答 2

2

迈克尔发布的内容有效,但它是对图表中所有用户的全面扫描(除非gender被索引,但这迟早会导致其他问题)。您应该执行以下操作:

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

in此外,如果可能,请在和out步骤中提供边缘标签。

于 2020-02-11T14:28:13.747 回答
1

尝试:

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

似乎您正在寻找and()步骤以便在 gremlin 中进行交叉。

于 2020-02-10T19:40:17.140 回答