是否有一个Gremlin NULL关键字或类似的东西不是';这不是一个横向步骤吗? 问题

是否有一个Gremlin NULL关键字或类似的东西不是';这不是一个横向步骤吗? 问题,gremlin,Gremlin,我一直在优化基于graph的应用程序(Cosmos DB上的Gremlin API)的性能,但总体来说,我的情况并不好。经过相当多的挖掘,我意识到不必要的遍历处理造成了很多痛苦。如果我想获得所有的foo顶点以及这些边可能具有的任何条边(想想SQL中的left join),我会用Gremlin编写以下代码: g.V().hasLabel("foo").as("foos"). coalesce(out("bar"),constant()).as("bars"). select("foos","bar

我一直在优化基于graph的应用程序(Cosmos DB上的Gremlin API)的性能,但总体来说,我的情况并不好。经过相当多的挖掘,我意识到不必要的遍历处理造成了很多痛苦。如果我想获得所有的foo顶点以及这些边可能具有的任何条边(想想SQL中的left join),我会用Gremlin编写以下代码:

g.V().hasLabel("foo").as("foos").
coalesce(out("bar"),constant()).as("bars").
select("foos","bars")
结果将包括一组元组,其中项目1名为foos,项目2名为bar。Foos总是有一个顶点,而条则有一条边或一个[]

与为每个顶点处理一个
constant()
步骤的新匿名遍历不同,空值将使整个过程更加高效


我到处找过了,但在《小精灵》里找不到空的。有人有什么想法吗?

在Gremlin中没有返回值的概念。这是一个更烦人的部分,但您必须返回一个值

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

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