首页 > 解决方案 > 如何在折叠 gremlin 之后使用以前存储的项目

问题描述

首先,我使用的是 azure cosmos graph db。

我经常看到这种模式:

out('an-edge').fold().coalesce(unfold(),addV('incoming-schedule'))

我想在合并中执行 addV 后立即添加一条边。我一直试图在一个简单的例子中做到这一点:

g.V('any-vertex-id').as('a').out('an-edge').coalesce(unfold(),addV('new-vertex').addE('to-v').from('a'))

在 fold() 之后“a”似乎不再存在,因为它是一个障碍步骤。我尝试了存储和聚合,但我不能正确理解这些。是否有可能在 fold() 之后获得参考?我需要它,因为它可能会在查询中引用以前的 addV,而我还没有 id。

标签: azure-cosmosdbgremlin

解决方案


你在这里有什么要求?您是否只想在 out('an-edge') 不存在时创建一个新顶点?

如果是这样的话,我会试试这个:

g.V('any-vertex-id').as('a').coalesce(out('an-edge'), addV('new-vertex').addE('to-v').from(select('a')))

当需要聚合上一步的所有输出时,通常使用 Fold()。我不认为,在这种情况下这是必要的。

http://tinkerpop.apache.org/docs/current/reference/#fold-step


推荐阅读