2

頂点の一意の ID は DSE Graph の community_id のようです。

これが機能することがわかりました(IDは長いです):

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

それらのどれも機能しません:

   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() が 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}]

もっと簡潔な方法があるはずです...どんな助けも大歓迎です:)

4

2 に答える 2

2

実際に私はそれを見つけました:

ID は、次の文字列形式で記述できます。"vertexLabel:community_id:member_id"

上記の例では、次のようになりid="User:1488246528:512"ます。

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

特定の頂点を返します

今まで、V() または hasId() で使用できるように、Vertex の ID を (文字列として) 簡潔に出力する良い方法を知りません。現在行っていることは次のとおりです。

LinkedHashMap id = ((LinkedHashMap)v.id());
String idStr = v.label()+":"+id.get("community_id")+":"+id.get("member_id");
于 2016-12-20T09:27:40.177 に答える