我正在使用Cosmos DB中的Graph API进行操作,其使用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')
这里的'7112138f-fae6-4272-92d8-4f42e331b5e1'
是我正在查询的用户的id,但我事先不知道这是一个入边还是出边,所以想要获取两者(例如,如果该用户具有与“knows”标签相关的入边和出边)。
我尝试使用投影和OR运算符以及各种组合,例如:
g.V('7112138f-fae6-4272-92d8-4f42e331b5e1').where(outE('knows').or().inE('knows'))
但它没有给我返回我想要的数据。
我只想要一个列表,其中包含所有具有标签“knows”的inE和outE的Id,针对给定的顶点。
还有一种更简单/更好的建模双向关联(如“知道”或“朋友”)的方法吗?
谢谢。
both
来获取你想要的顶点。http://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#both-java.lang.String...- - pantalohnes