Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有一种方法可以始终使用select返回用于Gremlin匹配查询的地图列表?_Java_Gremlin - Fatal编程技术网

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'))
返回贴图列表,其中每个值都是顶点列表,而不仅仅是顶点。