我能够在一个顶点的单个属性上按查询写入聚合/分组。 以下查询包含在检索数据时的ACL评估,您可以在回答问题时忽略这些数据。
g.V().has('user','userId',123).emit().until(__.not(outE('member_of'))).repeat(out('member_of')).outE('has_permission').has('permission','view').inV().as('f').select('f').group().by('folderType').by(count())
这给了我以下结果
==>[PROJECT:2,RegularFolder:4,ORGANISATION:7,DIVISION:4]
就像folderType一样,文件夹顶点具有多个属性。
期望像Elasticsearch聚合查询结果一样。
"folderType":[PROJECT:2,RegularFolder:4,ORGANISATION:7,DIVISION:4]
"CreatedBy":[user1:2,user2:4,user3:7,user4:4]
如何编写给出上述结果且接近预期的gremlin查询。
答案 0 :(得分:3)
我知道您说过要忽略您的初始查询,但我不禁要重写为:
g.V().has('user','userId',123).
emit().
until(__.not(outE('member_of'))).
repeat(out('member_of')).
outE('has_permission').has('permission','view').inV().
groupCount().
by('folderType')
,因为不需要“ f”的步骤标签,在这种情况下使用groupCount()
更精确。如果您需要groupCount()
的多个属性,我想可能有几种方法,但是在这种情况下,正如您所描述的,我认为最简单的方法是计算两个groupCount()
副作用,然后{ 1}}一起出来:
cap()