。net core 3.0中使用Gremlin查询的Janusgraph

问题描述 投票:0回答:1

我们目前在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

  1. 是否有一种方法可以运行/重写此查询而不将其分成两个部分? janusgraph的新手,在Cosmos db中可以正常工作。
  2. 根据stackoverflow,我了解janusgraph中涉及自定义反序列化。我尝试过,但仍然无济于事。有人可以发布可以在.net core 3.0中添加自定义反序列化的有效代码。

为简单起见,查询g.V(1).as('v').outE().limit(1).as('e').select('v','e')直接在gremlin控制台中工作,但不适用于janusgraph的gremlin.net库(groovy-string)。我们已经在服务器中尝试了GRYO和GraphSON Serializer设置。我们可以使用groovy-string,因为这是现有应用程序。

azure-cosmosdb gremlin .net-core-3.0 janusgraph tinkerpop3
1个回答
0
投票

只要我们没有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())
© www.soinside.com 2019 - 2024. All rights reserved.