Gremlin Javascript折叠,合并和展开

时间:2018-10-25 05:37:34

标签: javascript gremlin

使用gremlin-javascript,我要执行“不存在时添加”交易,例如:

g.V()
  .hasLabel('account').has('uid', '1')
  .fold()
  .coalesce(
    g.V().unfold(),
    g.V().addV('account').property('uid', '1')
  )

我该如何表达这种查询?

2 个答案:

答案 0 :(得分:1)

我假设您已经在其他地方看到过这种模式,也许已经在Gremlin Console中进行了演示。那是Gremlin Groovy,Gremlin是Gremlin是Gremlin,无论您使用哪种编程语言。除了一些小的惯用差异外,Gremlin的大多数变体彼此相同。对于Javascript和Gremlin的这一特定方面,您所问的Gremlin与Groovy没什么不同:

g.V().
  hasLabel('account').has('uid', '1').
  fold().
  coalesce(unfold(),
           addV('account').property('uid', '1'))

请注意,anonymous fashion中调用了unfold()addV()。只需按照here中所述从__导入它们即可。

答案 1 :(得分:0)

更明确地说:

const __ = gremlin.process.statics;

g.V()
  .hasLabel('account').has('uid', '1')
  .fold()
  .coalesce(
    __.unfold(),
    __.addV('account').property('uid', '1')
  )