Gremlin:提供的遍历器未映射到值
Gremlin: The provided traverser does not map to a value
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)
这是什么意思?
因此,当 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()
)
as()
步骤就是所谓的 reducing barrier step。通过减少障碍步骤,查询的任何路径历史记录(例如通过 as()
应用标签)都会丢失。在减少障碍步骤时,许多路径被减少为单一路径。在那一步之后,将无法知道许多原始标记顶点中的哪一个是正确的检索点。
添加到此以防其他人遇到此问题。
当您在 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'))
第一个查询会给出上述错误,第二个不会。
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)
这是什么意思?
因此,当 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()
)
as()
步骤就是所谓的 reducing barrier step。通过减少障碍步骤,查询的任何路径历史记录(例如通过 as()
应用标签)都会丢失。在减少障碍步骤时,许多路径被减少为单一路径。在那一步之后,将无法知道许多原始标记顶点中的哪一个是正确的检索点。
添加到此以防其他人遇到此问题。
当您在 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'))
第一个查询会给出上述错误,第二个不会。