Gremlin 查询到 ResultSet 中的 return 多个结果
Gremlin Query to return multiple Result in a ResultSet
可能是我对 gremlin 查询的理解有误:)。我正在尝试从 Java 客户端执行查询,查询是:g.V().hasLabel('MYLABEL')。
有多个(比如 20 个)与标签匹配的顶点,结果集只有 一个 结果,其中包含所有二十个顶点的数据。我想要包含 20 个结果的 ResultSet。我需要用什么方式重新排列查询。请提出建议。
- 更多细节:
来自控制台。
[从 gremlin 控制台查询结果为 运行][1]
gremlin>client.submit("g.V().hasLabel('PERSON')")
==>结果{object=v[11] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>结果{object=v[13] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>结果{object=v[15] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
来自 Java 客户
查询 -> g.V().hasLabel('PERSON')
结果 -> 结果{object={@type=g:List, @value=[{@type=g:Vertex, @value={id={ @type=g:Int64, @value=11}, label=PERSON, properties={AGE=[{@type=g:VertexProperty, @value={id={@type=g:Int64, @value=12} , value={@type=g:Int32, @value=11}, label=AGE}}]}}}, {@type=g:Vertex, @value={id={@type=g:Int64, @值=13},标签=人,属性={AGE=[{@type=g:VertexProperty,@value={id={@type=g:Int64,@value=14},值={@type=g :Int32, @value=12}, label=AGE}}]}}}, {@type=g:Vertex, @value={id={@type=g:Int64, @value=15}, label=PERSON , 属性={AGE=[{@type=g:VertexProperty, @value={id={@type=g:Int64, @value=16}, value={@type=g:Int32, @value=13} , 标签=AGE}}]}}}]} class=java.util.LinkedHashMap}
只需使用 fold()
- 你可以在这里看到我的例子:
gremlin> cluster = Cluster.open()
==>localhost/127.0.0.1:8182
gremlin> client = cluster.connect()
==>org.apache.tinkerpop.gremlin.driver.Client$ClusteredClient@51efb731
gremlin> r = client.submit("g.V().hasLabel('person')").all().get()
==>result{object=v[1] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[2] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[4] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[6] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
gremlin> r = client.submit("g.V().hasLabel('person').fold()").all().get()
==>result{object=[v[1], v[2], v[4], v[6]] class=java.util.ArrayList}
请注意,此示例中 fold()
的缺点是结果不会流回客户端。您将在服务器的内存中构建整个列表,然后它将将该列表序列化为单个有效负载。如果该列表足够大并且您生成了足够多的此类列表,您可能会遇到 memory/GC 个问题。
可能是我对 gremlin 查询的理解有误:)。我正在尝试从 Java 客户端执行查询,查询是:g.V().hasLabel('MYLABEL')。 有多个(比如 20 个)与标签匹配的顶点,结果集只有 一个 结果,其中包含所有二十个顶点的数据。我想要包含 20 个结果的 ResultSet。我需要用什么方式重新排列查询。请提出建议。
- 更多细节:
来自控制台。
[从 gremlin 控制台查询结果为 运行][1]
gremlin>client.submit("g.V().hasLabel('PERSON')")
==>结果{object=v[11] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>结果{object=v[13] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>结果{object=v[15] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
来自 Java 客户 查询 -> g.V().hasLabel('PERSON')
结果 -> 结果{object={@type=g:List, @value=[{@type=g:Vertex, @value={id={ @type=g:Int64, @value=11}, label=PERSON, properties={AGE=[{@type=g:VertexProperty, @value={id={@type=g:Int64, @value=12} , value={@type=g:Int32, @value=11}, label=AGE}}]}}}, {@type=g:Vertex, @value={id={@type=g:Int64, @值=13},标签=人,属性={AGE=[{@type=g:VertexProperty,@value={id={@type=g:Int64,@value=14},值={@type=g :Int32, @value=12}, label=AGE}}]}}}, {@type=g:Vertex, @value={id={@type=g:Int64, @value=15}, label=PERSON , 属性={AGE=[{@type=g:VertexProperty, @value={id={@type=g:Int64, @value=16}, value={@type=g:Int32, @value=13} , 标签=AGE}}]}}}]} class=java.util.LinkedHashMap}
只需使用 fold()
- 你可以在这里看到我的例子:
gremlin> cluster = Cluster.open()
==>localhost/127.0.0.1:8182
gremlin> client = cluster.connect()
==>org.apache.tinkerpop.gremlin.driver.Client$ClusteredClient@51efb731
gremlin> r = client.submit("g.V().hasLabel('person')").all().get()
==>result{object=v[1] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[2] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[4] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
==>result{object=v[6] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
gremlin> r = client.submit("g.V().hasLabel('person').fold()").all().get()
==>result{object=[v[1], v[2], v[4], v[6]] class=java.util.ArrayList}
请注意,此示例中 fold()
的缺点是结果不会流回客户端。您将在服务器的内存中构建整个列表,然后它将将该列表序列化为单个有效负载。如果该列表足够大并且您生成了足够多的此类列表,您可能会遇到 memory/GC 个问题。