我试图使用单个Gremlin查询来确定满足某个条件的顶点的百分比,但我在存储和传播计算值时遇到了问题。
假设我想计算所有标记为"A"并具有标记为"B"的出边的顶点的百分比。我可以在同一个查询中打印出标记为"A"的顶点数量,以及具有标记为"B"的出边的顶点数量:
这给了我两个相关的值:
理想情况下,我希望得到这样的结果:
假设我想计算所有标记为"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)
我的问题是,我如何在第三个by()
语句中访问totalA
和totalWithEdgeB
的值?或者我做错了什么?