Я получаю разные результаты при выполнении одной и той же команды на 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()
.