pyorient和OrientDB Studio在同一查询上返回的结果不匹配

时间:2019-02-25 12:13:15

标签: python orientdb pyorient

在OrientDB和pyorient上执行同一命令时,得到不同的结果。在OrientDB中使用outE().inV()函数会导致图形的完整遍历,而在pyorient中,它只会返回第一个顶点。

Sample graph

使用以下查询查询图形(位于上面的链接中)时:

      traverse outE('has_component').inV() 
  from 
    (select expand(rid) from index:part.part_id where key = 'A') 
  maxdepth 2 strategy breadth_first

使用OrientDB Studio,可以获得所需的结果,它基本上是整个图形的遍历。但是当我在pyorient中使用此命令时:

cmd = """
  traverse outE('has_component').inV() 
  from 
    (select expand(rid) from index:part.part_id where key = 'A') 
  maxdepth 2 strategy breadth_first
"""

r = client.query(cmd, -1)

我只得到根节点(即“ A”)。它不会遍历整个图形。如何让pyorient像OrientDB Studio一样工作?

我知道我可以使用out()而不是outE().inV()遍历图形 但我想通过在边的参数上施加条件来限制遍历:

outE(<edge-class-name>)[<condition-on-edge-parameters>].inV()

这就是为什么我以这种方式进行遍历。当我使用out()时,遍历在pyorient中正常工作。

0 个答案:

没有答案