【问题标题】:how to get an an edge which has the maximum value of a edge property from a vertex如何从顶点获取具有边属性最大值的边
【发布时间】:2017-02-15 13:06:03
【问题描述】:

场景:找到具有最多经验的员工 Vertex 的工作,该员工具有超出边缘 WorkedAs 并具有边缘属性 workedForYears,该员工具有该工作多年的经验。

我用过

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

这将返回一个整数。有什么办法让我占得先机吗?

【问题讨论】:

    标签: gremlin tinkerpop tinkerpop3


    【解决方案1】:

    您可以使用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() 跳回该特定位置。

    【讨论】:

    • 你不需要跳回“e”,你其实还在“e”。
    • 哦,谢谢 Jason,但考虑到我在超过 1000 条边的更大范围内进行操作,这是否会影响处理时间,因为我们使用的是限制步骤,它是否会存储订单中的所有 1000 个结果并给我们第一个 。虽然在这种情况下,让员工做 1000 份工作是很愚蠢的,我刚刚问过这样我可以在超过 1000 条边的数据上使用它
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 2023-03-16
    • 1970-01-01
    • 2019-11-25
    • 2016-05-28
    • 2021-07-13
    • 2012-08-13
    • 2023-03-11
    相关资源
    最近更新 更多