我有一个具有功能的用户的小精灵图。图形的边缘从用户处出来并进入特征。用户没有传入边缘,功能也没有传出边缘。每个用户顶点都有许多向外的边进入特征顶点。
我想找到连接到< 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)))
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.