Результаты, возвращенные Pyorient и OrientDB Studio по одному запросу, не совпадают - PullRequest
0 голосов
/ 25 февраля 2019

Я получаю разные результаты при выполнении одной и той же команды на OrientDB и pyorient.Использование функции outE().inV() в OrientDB приводит к полному обходу графа, тогда как в пиориенте он возвращает только первую вершину.

Пример графика

При запросе к графу (найдено в ссылке выше), используя следующий запрос:

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

с помощью OrientDB studio, я получаю желаемый результат, который в основном является обходом всего графика.Но когда я использую эту команду в пиориенте, например:

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?

Я знаю, что могу пройти по графику, используя out() вместо outE().inV(), но я бы хотел ограничить обход в некоторой точке, налагая условия на параметры ребер, как:

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

именно поэтому я делаю обход таким образом.Обход работает нормально в пиориенте, когда я использую out().

...