Tinkerpop3 Gremlin 遍历错误
Tinkerpop3 Gremlin Traversal Error
我有一个具有以下结构的图表:
|-ProductFit
|-|-Part
|-|-App
|-|-|-ProductID
|-|-|-ProductModelID
|-|-|-ProductYearID
|-ProductID
|-|-ProductName
|-|-ProductModelID
|-|-ProductYearID
|-ProductModelID
|-|-ProductModelName
|-ProductYearID
|-|-ProductYear
其中 ProductFit 是我的第一个独立顶点,ProductID、ProductModelID 和 ProductYearID 是我连接的顶点。
现在,ProductFit 中 ProductID 的某些字段具有错误的值,我需要从 ProductID 的其他顶点获取值。
这是我的查询:
g.V().has('ProductFit','Part','PA01').properties('App')
.valueMap('ProductID','ProductModelID','ProductYearID')
.choose(values('ProductModelID'))
.option(PM01, g.V().has('ProductFit','Part','PA01').properties('App').values('ProductModelID'))
.option(PM02, g.V().has('ProductID','ProductModelID','PM01'))
.values('ProductModelID')
但这给了我这个错误:
java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
是我遍历的时候不能从一个顶点到另一个顶点还是查询有问题? TIA.
您的 choose()
使用的是 values()
,这并不是要从 Map
中选取值。它旨在与 Element
一起使用。我在 The Crew 玩具图上遇到了同样的错误:
gremlin> graph = TinkerFactory.createTheCrew()
==>tinkergraph[vertices:6 edges:14]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:14], standard]
gremlin> g.V().properties('location').valueMap().choose(values('startTime')).option(2004,constant(1)).option(none,constant(2))
java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
Type ':help' or ':h' for help.
Display stack trace? [yN]n
您应该改用 select
:
gremlin> g.V().properties('location').valueMap().choose(select('startTime')).option(2004,constant(1)).option(none,constant(2))
==>2
==>2
==>1
...
==>2
我有一个具有以下结构的图表:
|-ProductFit
|-|-Part
|-|-App
|-|-|-ProductID
|-|-|-ProductModelID
|-|-|-ProductYearID
|-ProductID
|-|-ProductName
|-|-ProductModelID
|-|-ProductYearID
|-ProductModelID
|-|-ProductModelName
|-ProductYearID
|-|-ProductYear
其中 ProductFit 是我的第一个独立顶点,ProductID、ProductModelID 和 ProductYearID 是我连接的顶点。
现在,ProductFit 中 ProductID 的某些字段具有错误的值,我需要从 ProductID 的其他顶点获取值。
这是我的查询:
g.V().has('ProductFit','Part','PA01').properties('App')
.valueMap('ProductID','ProductModelID','ProductYearID')
.choose(values('ProductModelID'))
.option(PM01, g.V().has('ProductFit','Part','PA01').properties('App').values('ProductModelID'))
.option(PM02, g.V().has('ProductID','ProductModelID','PM01'))
.values('ProductModelID')
但这给了我这个错误:
java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
是我遍历的时候不能从一个顶点到另一个顶点还是查询有问题? TIA.
您的 choose()
使用的是 values()
,这并不是要从 Map
中选取值。它旨在与 Element
一起使用。我在 The Crew 玩具图上遇到了同样的错误:
gremlin> graph = TinkerFactory.createTheCrew()
==>tinkergraph[vertices:6 edges:14]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:14], standard]
gremlin> g.V().properties('location').valueMap().choose(values('startTime')).option(2004,constant(1)).option(none,constant(2))
java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
Type ':help' or ':h' for help.
Display stack trace? [yN]n
您应该改用 select
:
gremlin> g.V().properties('location').valueMap().choose(select('startTime')).option(2004,constant(1)).option(none,constant(2))
==>2
==>2
==>1
...
==>2