Gremlin 组插入并添加顶点如果不存在

问题描述

我正面临这个挑战,我有多个表单对象

{"fookey":"foovalue","barkey","barvalue"}

我想做的是为每个带有标签 foo 的条目插入一个节点,如下所示:

label: foo
value: foovalue

添加标签bar 的节点(如果它们尚不存在)(基于 value 属性相等性

label: bar
value: barvalue

最终结果是创建了 foo 顶点和 bar,然后添加边以连接它们,但目前我什至无法插入它们。

我的代码如下所示:

        g.inject(object_list).unfold()\
            .sideEffect(
                addV("foo").property("value",select("foovalue"))
            ).sideEffect(
                V().has('bar','value',select('barvalue')).fold().coalesce(
                    unfold(),addV('bar').property('value',select('barvalue'))
                )
            )

基本上,我们在 foo添加 sideEffect 节点,然后在另一个 sideEffect 中我们尝试使用 bar 插入尚不存在的 barvalue 节点{1}} 属性

中断的步骤是 bar sideEffect,有错误

The provided traverser does not map to a value: []->[SelectOnestep(last,barvalue)]

在旁注中,我还尝试了另一种方法,即使用 group by,类似于 tinkerpop 文档中的 this example。我认为它看起来更有意义,但我也无法让它工作

编辑:我在查询方面取得了进展,现在通过分组来完成

g.inject(object_list)\
  .sideEffect(
      .unfold().addV("foo").property("value",select("foovalue"))
      .group("b").by("barkey")
  ).sideEffect(
      V().has('fookey',select("b").unfold().select(Column.keys)).fold()
          .coalesce(
              unfold(),addV('fookey').property('value',select("b").unfold().select(Column.keys))
      )
  ).next()

这似乎有效,但是只添加一个(第一个bar 对象,即使有多个。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...