我正在尝试使用单个 gremlin 查询来确定满足某个谓词的顶点的百分比,但是我在存储和传播计算值时遇到了问题。
假设我想计算所有带有标签“A”的顶点的百分比,这些顶点的输出边带有标签“B”。我可以在同一个查询中打印出带有标签“A”的顶点数,以及带有标签“B”的出边的顶点数:
g.V().limit(1).project("total","withEdgeB")
.by(g.V().hasLabel("A").count())
.by(g.V().hasLabel("A").match(__.as("a").outE("B").inV()).dedup().count())
这给了我两个相关的值:total
和withEdgeB
. 如何使用这些值进行传播和计算?
理想情况下,我想要这样的东西:
g.V().limit(1).project("total","withEdgeB","percentage")
.by(g.V().hasLabel("A").count().as("totalA"))
.by(g.V().hasLabel("A").match(__.as("a").outE("B").inV()).dedup().count().as("totalWithEdgeB"))
.by(totalWithEdgeB / totalA)
totalA
所以我的问题是,如何totalWithEdgeB
在第三个by()
语句中访问这些值?还是我对这一切都错了?