如何以简洁的方式在Datastax DSE 5.0 Graph中按顶点ID查询?

how to query by vertex id in Datastax DSE 5.0 Graph in a concise way?

在 DSE Graph 中,顶点的唯一 ID 似乎是 community_id。

我发现这行得通(id 很长):

   v = g.V().has("VertexLabel","community_id",id).next()

none 的作品:

   v = g.V("community_id",id).next()
   v = g.V("community_id","VertexLabel:"+id).next()
   v = g.V(id).next()
   v = g.V().hasId(id).next()
   v = g.V().hasId("VertexLabel:"+id).next()
   v = g.V("VertexLabel:"+id).next()

编辑

经过一番调查,我发现对于顶点 v,v.id() returns 一个 LinkedHashMap:

Vertex v = gT.next();
Object id = v.id();
System.out.println(id);
System.out.println(id.getClass());
System.out.println(g.V().hasId(id).next());
System.out.println(g.V(id).next());

以上打印:

{~label=User, community_id=1488246528, member_id=512}
class java.util.LinkedHashMap
v[{~label=User, community_id=1488246528, member_id=512}]
v[{~label=User, community_id=1488246528, member_id=512}]

应该有更简洁的方式... 感谢您的帮助:)

其实我找到了:

ids 可以写成这种字符串形式:"vertexLabel:community_id:member_id"

所以对于上面的例子id="User:1488246528:512":

v = g.V().hasId("User:1488246528:512").next()
v = g.V("User:1488246528:512").next()

returns具体顶点

直到现在我还不知道如何简洁地打印 Vertex 的 id(作为字符串)以便它可以在 V() 或 hasId() 中使用的好方法..我目前所做的是:

LinkedHashMap id = ((LinkedHashMap)v.id());
String idStr = v.label()+":"+id.get("community_id")+":"+id.get("member_id");

Michail,您也可以提供自己的 ID 来帮助简化此项目。这样做有取舍,但也有优势。详情请看这里 - http://docs.datastax.com/en/latest-dse/datastax_enterprise/graph/using/createCustVertexId.html?hl=custom%2Cid