Gremlin查询进入和退出给定顶点的边缘

LDJ*_*LDJ 3 graph gremlin tinkerpop azure-cosmosdb

我正在使用Graph API,Cosmos DB 其中使用Gremlin语法进行查询.

我在图中有许多用户(Vertex),每个用户都有"知道"属性给其他用户.其中一些是外边缘(outE),另一些是边缘(inE),具体取决于关系的创建方式.我现在正在尝试创建一个查询,它将返回给定用户(Vertex)的所有"已知"关系.我可以通过以下方式轻松获取inE或outE的ID:

g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').inE('knows') 
g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').outE('knows') 
Run Code Online (Sandbox Code Playgroud)

'7112138f-fae6-4272-92d8-4f42e331b5e1'我正在查询的用户的ID 在哪里,但我不知道这是一个进入还是出现边缘,所以想要得到两者(例如,如果用户进出边缘'知道'标签).我尝试过使用投影和OR运算符以及各种组合,例如:

g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').where(outE('knows').or().inE('knows'))
Run Code Online (Sandbox Code Playgroud)

但它没有让我回到我想要的数据.

我想要的只是所有inE和outE的Id的列表,其具有给定顶点的'已知'标签.

或者是否有更简单/更好的方法来模拟双向关联,例如'knows'或'friendOf'?

谢谢

pan*_*nes 9

您可以使用bothE此案例中的步骤.g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').bothE('knows')

  • 你也可以使用`both`来获得你想要的顶点.http://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#both-java.lang.String...- (4认同)