Gremlin 根据仅具有入边或出边的顶点识别种群子集
Gremlin identifying subsets of populations based on vertices that only have in or out edges
我有一个 gremlin 图,其中包含具有特征的用户。图的边缘从用户出去并进入特征。没有到用户的传入边,也没有从特征传出的边。每个用户顶点都有许多到特征顶点的出边。
我想找到连接到 feature_a
和 feature_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)))
尝试:
g.V().hasLabel('User').has('gender', 'Female').and(
__.out().hasId('feature_a'),
__.out().hasId('feature_b')
)
您似乎在寻找 and()
步骤以便在 gremlin 中进行交集。
Michael 发布的内容有效,但它是对图表中所有用户的全面扫描(除非 gender
已编入索引,但这迟早会导致其他问题)。你应该做类似下面的事情:
g.V().hasId('feature_a').
in().has('gender', 'Female').
filter(out().hasId('feature_b'))
此外,如果可能,请在 in
和 out
步骤中提供边缘标签。
我有一个 gremlin 图,其中包含具有特征的用户。图的边缘从用户出去并进入特征。没有到用户的传入边,也没有从特征传出的边。每个用户顶点都有许多到特征顶点的出边。
我想找到连接到 feature_a
和 feature_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)))
尝试:
g.V().hasLabel('User').has('gender', 'Female').and(
__.out().hasId('feature_a'),
__.out().hasId('feature_b')
)
您似乎在寻找 and()
步骤以便在 gremlin 中进行交集。
Michael 发布的内容有效,但它是对图表中所有用户的全面扫描(除非 gender
已编入索引,但这迟早会导致其他问题)。你应该做类似下面的事情:
g.V().hasId('feature_a').
in().has('gender', 'Female').
filter(out().hasId('feature_b'))
此外,如果可能,请在 in
和 out
步骤中提供边缘标签。