2017-02-15 242 views
2

场景:查找哪个是员工体验最多的职位顶点出现边缘WorkedAs并且边缘属性为workedForYears具有该经验在那个工作年内。如何从一个顶点获得边缘属性的最大值的边缘

我用

g.V().has('EmployeeId','1234').outE('WorkedAs').values('workedForYears').max() 

这将返回我的整数。有什么办法可以获得优势吗?

回答

2

您可以使用order().by().limit(1)模式而不是max(),因此您不会将遍历中的项目转换为整数。

g.V().has('EmployeeId','1234').outE('WorkedAs').as('e') \ 
    .order().by('workedForYears', decr).limit(1).select('e') 

注意,我使用的as()步骤(As Step docs)标记在的Gremlin遍历一个特定的点。然后在其他处理之后,您可以使用select()跳回到该特定点。

+2

你不需要跳回到“e”,你实际上仍然在“e”。 –

+0

噢谢谢Jason,但是这会影响处理时间,考虑到我在1000个以上边缘的较大规模上进行处理,因为我们使用的是限制步骤,它存储了来自订单的所有1000个结果并给予我们第一个结果。尽管在这种情况下,如果一个员工做了1000个我刚刚问过的工作,这样我就可以在数据上使用1000个以上的边 –