Java 是否有一种方法可以始终使用select返回用于Gremlin匹配查询的地图列表?
我有以下代码:Java 是否有一种方法可以始终使用select返回用于Gremlin匹配查询的地图列表?,java,gremlin,Java,Gremlin,我有以下代码: Vertex v = g.addV().property("valueStr", "3").next(); Vertex v2 = g.addV().property("valueStr", "4").next(); Vertex v3 = g.addV().property("valueStr", "5").next(); Edge e = g.V(v.id()).as("a").V(v2.id()).as("b").addE("anEdge")
Vertex v = g.addV().property("valueStr", "3").next();
Vertex v2 = g.addV().property("valueStr", "4").next();
Vertex v3 = g.addV().property("valueStr", "5").next();
Edge e = g.V(v.id()).as("a").V(v2.id()).as("b").addE("anEdge").from("a").to("b").property("value", "4").as("e").next();
Edge e2 = g.V(v.id()).as("a").V(v3.id()).as("b").addE("anEdge").from("a").to("b").property("value", "5").as("e").next();
List vertices1 = g.V().match(
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v2.id()).as("b"),
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v3.id()).as("c")).toList();
System.out.println(vertices1);
List vertices2 = g.V().match(
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v2.id()).as("b"),
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v3.id()).as("c")).select("a","b").toList();
System.out.println(vertices2);
List vertices3 = g.V().match(
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v2.id()).as("b"),
__.as("a").hasId(v.id()).outE("anEdge").inV().hasId(v3.id()).as("c")).select("a").toList();
System.out.println(vertices3);
它基本上是节点a
连接到b
,节点a
连接到c
我正在对这个子图进行匹配查询,每次我都返回匹配的元素子集
以下是产出:
[{a=v[20], b=v[22], c=v[24]}]
[{a=v[20], b=v[22]}]
[v[20]]
在前两种情况下,我得到了地图的列表
。。在最后一个例子中,我得到了一个列表
最后一个例子怎么可能使它也成为一个地图的列表呢?我知道我可以用选择(“a”,“a”)
来进行黑客攻击,但似乎应该有一个更干净的方法
文档在哪里解释了在哪些情况下我将获得顶点的列表
,/边
,贴图
或贴图的列表
等
谢谢!代替选择(“a”)
使用项目(“a”)
代替选择(“a”)
使用项目(“a”)。by(选择(“a”))
如果我按照您描述的方式使用投影,所有情况下都会返回列表列表吗?谢谢!您只需要在选择单个项目时使用它。返回的每个项目实际上是一个LinkedHashMap(至少在Groovy和Java中是这样)。映射的每个元素都是一个键('a')和一个值(在本例中是顶点)。除非:查询中有多个位置将某个内容分配给相同的名称。例如:g.V().as('a').out().as('a')。project('a')。by(select('a'))
返回映射列表,其中每个值都是顶点列表,而不仅仅是顶点。如果我按照您描述的方式使用投影,所有情况下都会返回列表列表吗?谢谢!您只需要在选择单个项时使用它。返回的每个项实际上是LinkedHashMap(至少在Groovy和Java中是这样)。映射的每个元素都是一个键('a')和一个值(在本例中为顶点)。除非:在查询中有多个位置指定了相同的名称。例如:g.V().as('a')。out().as('a')。project('a')。by(select('a'))
返回贴图列表,其中每个值都是顶点列表,而不仅仅是顶点。