【问题标题】:Is there a Gremlin NULL keyword or something similar that isn't a traversal step?是否有 Gremlin NULL 关键字或类似的不是遍历步骤的东西?
【发布时间】:2019-10-25 19:12:51
【问题描述】:

问题

我一直在优化我们基于图形(Cosmos DB 上的 Gremlin API)构建的应用程序的性能,但我通常都过得很糟糕。经过大量的挖掘,我意识到一堆痛苦是由不必要的遍历处理引起的。如果我想获取所有 foo 顶点以及这些边可能具有的任何条形边(想想 SQL 的左连接),我会在 Gremlin 中编写以下内容:

g.V().hasLabel("foo").as("foos").
coalesce(out("bar"),constant()).as("bars").
select("foos","bars")

结果将包含一组元组,其中第 1 项名为 foos,第 2 项名为 bar。 Foos 总是有一个顶点,而 bar 有一个边或一个 []。

与为每个顶点处理一个新的匿名遍历不同,使用一个 constant() 步骤,null 将使整个事情更加高效。

我到处寻找,但在 Gremlin 中找不到 null。有人有什么想法吗?

【问题讨论】:

    标签: gremlin


    【解决方案1】:

    Gremlin 中没有返回 null 以获取值的概念。这是比较烦人的部分之一,但您必须返回一个值。

    此外,我认为您可以通过使用 project() 语句而不是遍历图形然后选择值来简化遍历。应该是这样的:

    g.V().hasLabel("foo").
      project('foo', 'bars').
        by(__.id()).
        by(__.outE('bars').fold().coalesce(unfold(), constant('')))
    

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2020-04-23
      • 2010-10-22
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多