如何在折叠小精灵之后使用以前存储的项目



首先,我使用的是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'))

"a"似乎在fold((之后不再存在,因为它是一个障碍步骤。 我尝试存储和聚合,但我一定不能正确理解它们。 是否可以在折叠((之后获得引用? 我需要它,因为它可能会在查询中引用我还没有 id 的先前 addV。

你在这里有什么要求?您是否要仅在 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

看起来我可以存储,然后在添加边缘时从中进行选择。

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

不确定是否有人有更好的选择或更好的建议然后存储,但这似乎至少在我的场景中有效

最新更新