【问题标题】:apache TinkerPop gremlin How to filter starting vertex from path resultapache TinkerPop gremlin 如何从路径结果中过滤起始顶点
【发布时间】:2020-09-09 07:51:57
【问题描述】:

伙计们!我是 gremlin 的新手,我需要帮助。

我想了解是否有办法根据邻居属性中的值对每个节点的完整图进行聚合?

示例: 我想计算“已知”客户花费的平均金额。

接下来是我的图结构:

Customer1 --> Phone_Number

所以我想得到下一个:

  • Customer1 平均值(Neighbors.value('money'))
  • Customer2 平均值(Neighbors.value('money'))
  • ...

客户(基本节点)的邻居是连接到与基本节点关联的一个(或多个)电话的所有其他客户(除了他自己)。 如果我知道 ID,我了解如何排除基节点,但是有没有办法在整个图表中自动排除“起始”节点? 比如,如果我们从 CustomerK 开始沿着所有路径忽略 CustomerK?

另一个小问题:有没有办法通过起始顶点值来过滤路径中的顶点属性?比如,忽略所有超过起始顶点“年龄”的客户

【问题讨论】:

    标签: python-3.x gremlin tinkerpop3


    【解决方案1】:

    您可以使用步骤asneq 谓词过滤起始顶点。

    像这样:

    g.V().hasLabel('Customer').as('V').
      project('name', 'mean').by('name').by(out().
        in().where(neq('V')).dedup().values('money').
        mean())
    

    示例:https://gremlify.com/as

    对于按属性过滤,您可以执行类似的操作:where(gt('V')).by('age')

    g.V().hasLabel('Customer').as('V').
      project('name', 'mean').by('name').
        by(coalesce(
            out().in().where(neq('V')).where(gt('V')).
              by('age').
            dedup().values('money').mean(),
            constant('no values')
          ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      相关资源
      最近更新 更多