折叠格林姆林纸后如何使用先前存储的物品

时间:2018-08-27 21:59:16

标签: azure-cosmosdb gremlin

首先,我正在使用azure宇宙图数据库。

我相当了解这种模式:

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()之后似乎不再存在,因为它是障碍步骤。我尝试存储和聚合,但我一定不能正确理解它们。 fold()之后是否可以获得引用?我需要它,因为它可能在查询中引用以前的addV,但我还没有ID。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

不确定是否有人可以存储一个更好的选择或建议,但这似乎至少在我的情况下有效