我们目前在net core 3.0应用程序中使用gremlin.net库连接到Janusgraph数据库。
我们需要在janusgraph中执行以下查询g.V('12345').outE('myedge').has('datetime',lt(1581922847)).order().by('datetime', incr).limit(100).valueMap().as('time').inV().as('user').select('time','user')
只要我们没有inV()
部分,查询就可以正常运行。如果我们有inV()
,我们将面临以下错误,ScriptEvaluationError: java.util.LinkedHashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Edge
为简单起见,查询g.V(1).as('v').outE().limit(1).as('e').select('v','e')
直接在gremlin控制台中工作,但不适用于janusgraph的gremlin.net
库(groovy-string)。我们已经在服务器中尝试了GRYO和GraphSON Serializer设置。我们可以使用groovy-string,因为这是现有应用程序。
只要我们没有inV()部分,查询就可以正常运行。如果我们有inV(),我们将面临以下错误,ScriptEvaluationError
您不能拥有inV()
,因为它跟在valueMap()
之后。 inV()
旨在从Edge
对象遍历到其传入的Vertex
,但是valueMap()
将Edge
转换为Map
,因此您将收到以下错误:“ java.util.LinkedHashMap不能为强制转换为org.apache.tinkerpop.gremlin.structure.Edge“
我想你只是想要:
g.V('12345').
outE('myedge').has('datetime',lt(1581922847)).
order().by('datetime', incr).
limit(100).
project('time','user').
by(valueMap()).
by(inV())