【发布时间】:2017-05-06 19:22:07
【问题描述】:
目标:我试图在一次遍历中添加一堆顶点和边并返回其中的一个子集。
可能是 Fluent API 仍处于 Beta 阶段,或者我没有正确理解 API:
我认为 .select() 和 GraphResultSet one() 和 all() 存在问题,但这是我尝试过的:
GraphTraversal<Vertex,Vertex> traversal = g.addV("Entity").property("uuid","testuuid").as("a")
.addV("Entity").property("uuid","testuuid3").as("b");
GraphStatement graphStatement = DseGraph.statementFromTraversal(traversal.select("a","b"));
GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName("graph"));
我正在创建两个顶点 a,b 并且我选择了它们。如果我只选择一个
grs.one().as(Vector.class) 工作正常...但现在我选择了 a 和 b ... grs.one() 和 grs.all() 在列表 [] 和 obj {} .. iterator() 中返回两个结果不能正常工作,因为 grs.all().count() 是 1.. 所以我无法得到我需要的东西.. 假设 grs.all() 返回一个用于两件事的迭代器并且 grs.one() 返回第一件事。
grs.all() 返回类似的内容:
[{a=DefaultVertex{id={~label=Entity, community_id=903802240, member_id=515}, label=Entity, properties=com.google.common.collect.Iterators$3@3670f00}, b=DefaultVertex{id={~label=Entity, community_id=903802240, member_id=516}, label=Entity, properties=com.google.common.collect.Iterators$3@452e26d0}}]
grs.one() 返回类似的内容:
{a=DefaultVertex{id={~label=Entity, community_id=1220980480, member_id=514}, label=Entity, properties=com.google.common.collect.Iterators$3@10b892d5}, b=DefaultVertex{id={~label=Entity, community_id=1220980480, member_id=515}, label=Entity, properties=com.google.common.collect.Iterators$3@3d3f761a}}
编辑(尝试迭代同一行中的多个事物(参见 cmets):
GraphNode ga = grs.all().iterator().next(); // this contains both a and b
System.out.println(ga.getClass()); // this is ObjectGraphNode :/
我正在使用:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>dse-driver</artifactId>
<version>1.1.1-beta1</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>java-dse-graph</artifactId>
<version>1.0.0-beta1</version>
</dependency>
感谢任何帮助!
【问题讨论】:
标签: datastax gremlin datastax-enterprise-graph