【问题标题】:Gremlin: The provided traverser does not map to a valueGremlin:提供的遍历器未映射到值
【发布时间】:2021-03-26 22:19:28
【问题描述】:
g.V()
    .has('atom', '_value', 'red').fold()
    .coalesce(unfold(), addV('atom').property('_value', 'red')).as('atom')
    .out('view').has('view', '_name', 'color').fold()
    .coalesce(unfold(), addE('view').from('atom').to(addV('view').property('_name', 'color')))

给我一​​个错误:

The provided traverser does not map to a value: []->[SelectOneStep(last,atom)] (597)

什么意思?

【问题讨论】:

    标签: database cassandra gremlin janusgraph scylla


    【解决方案1】:

    因此,当as() 后面跟着fold() 时,它会删除在as() 步骤中设置的变量。我改用aggregate() 如下:

    g.V()
        .has('atom', '_value', 'red')
        .fold().coalesce(
            unfold(), 
            addV('atom').property('_value', 'red')
        )
        .aggregate('atom')
        .out('view').has('view', '_name', 'color')
        .fold().coalesce(
            unfold(), 
            addE('view')
                .from(select('atom').unfold())
                .to(addV('view').property('_name', 'color'))
                .inV()
        )
    

    【讨论】:

      【解决方案2】:

      as() 步骤就是所谓的reducing barrier step。通过减少障碍步骤,任何查询的路径历史记录(例如通过as() 应用标签)都会丢失。在减少障碍步骤中,许多路径被简化为一条路径。在这一步之后,将无法知道在众多原始标记的顶点中哪一个是正确的检索。

      【讨论】:

        【解决方案3】:

        添加到此以防其他人遇到此问题。

        当您在from() 中使用 id 作为字符串而不是顶点对象时,会发生此特定错误。

        要明白我的意思,作为一个简单的测试运行以下 gremlin 查询:

        g.addE('view').from('atom').to(addV('view').property('_name', 'color'))

        然后运行这个查询:

        g.addE('view').from(V('atom')).to(addV('view').property('_name', 'color'))

        第一个查询会给你上述错误,第二个不会。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多