graph - 在两个顶点之间找到边的正确方法是什么?

标签 graph neo4j graph-databases titan tinkerpop

使用 tinkerpop blueprints API ,查找两个顶点之间是否存在边的最佳方法是什么?我想避免 vertex.getEdges()并迭代直到找到正确的。

例如:检查是否 v1v2的 friend

Vertex v1 = g.addVertex(null);
Vertex v2 = g.addVertex(null);
Edge edge = g.addEdge(null, v1, v2, "friends");
Edge edge = g.addEdge(null, v1, v2, "follows");

// Node with lots of edges - Supernode - problem?
List<Edge> edges = new ArrayList<Edge>();
for(Edge edge : g.getVertex(v1.getId()).getEdges(Direction.OUT, "friends")){
   if(edge.getVertex(Direction.IN).getId().equals(v2.getId()){
      edges.add(edge);
  }
}

我应该使用 Vertex Query ?

通过小鬼我可以这样做:
g.v(v1.getID()).outE("friends").inV.filter{it.id == v2.getID}

Neo4j way:
IndexHits<Relationship> relationships = relationshipIndex().get("type", edgeType, node1, node2);

谢谢您的帮助!
我对此还是很陌生。

最佳答案

gremlin> g.v(1).bothE.as('x').bothV.retain([g.v(3)]).back('x')

关于graph - 在两个顶点之间找到边的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327407/

相关文章:

graph-databases - 从 OrientDB 检索 OrientVertex 对象

algorithm - 图数据结构的最坏情况内存

graph - Neo4j 图形可视化库

java - Neo4j数据库研究

java - 无法使用 Neo4j Rest API 进行查询 - 读取为 JSON 时出错 ''

c# - 使用 SQL Server Graph 2017 获取两个节点之间的所有路径

graph-databases - OrientDb 中两个关系的公共(public)顶点

python - 最短路径搜索 - 使用边类型 [NetworkX、igraph]

mysql - facebook 中的图表和 MYSQL 数据库之间的区别?

Neo4j SDN 国际化