gpt4 book ai didi

Gremlin:计算具有给定标签和属性值的出站边缘

转载 作者:行者123 更新时间:2023-12-01 22:08:44 24 4
gpt4 key购买 nike

我有一个图,其中顶点有多个出站边类型,并且每个边类型都有属性。我想计算每个顶点的出站边数,但将计数限制为具有特定标签和属性值的边。

到目前为止我有:

g.V().hasLabel("vertexLabel").as("source")
.outE("edgeLabel").has("edgeProp", "propValue").as("edge")
.select("source", "edge")

这给了我一个列表,其中包含每个源顶点和每个具有正确标签和属性的出边。我想要做的是将每个源顶点和出站边数的计数减少到一个条目。但是,我似乎无法让 groupCountoutE 结合使用。我得到的最接近的是:

g.V().hasLabel("vertexLabel").as("source").out("edgeLabel").groupCount()

这让我按源顶点计数,但包括所有带有该标签的边,无论它们具有什么属性值。

我知道这可能需要一个 group().by() 步骤,但我不确定如何形成它。

提前致谢。

最佳答案

使用 TinkerPop 中的“现代”玩具图,我认为您可以使用 project() 最好地表达这一点:

gremlin> g.V().hasLabel('person').
......1> project('source','count').
......2> by().
......3> by(outE('created').has('weight',gt(0.5)).count())
==>[source:v[1],count:0]
==>[source:v[2],count:0]
==>[source:v[4],count:1]
==>[source:v[6],count:0]

你也可以用 groupCount() 来做,但我觉得有点尴尬:

gremlin> g.V().hasLabel('person').
......1> outE('created').
......2> has('weight',gt(0.5)).
......3> groupCount().
......4> by(inV())
==>[v[5]:1]

请注意,在这种情况下,您丢失了“0”值,因为边缘在 groupCount() 之前被过滤掉了。您也可以使用 group(),但我认为它不如 project() 好读:

gremlin> g.V().hasLabel('person').
......1> group().
......2> by().
......3> by(outE('created').
......4> has('weight',gt(0.5)).count())
==>[v[1]:0,v[2]:0,v[4]:1,v[6]:0]

关于Gremlin:计算具有给定标签和属性值的出站边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49951417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com