Скажем, у меня есть вопрос, как:Orientdb: получить все пройденные элементы пути
select out("E1").out("E2").out("E3") from V1
где E1, E2, E3 классы простирающиеся «E» и V1 является классом расширения «V».
Я хотел бы получить все элементы, которые были пройдены при выполнении запроса (т. Е. Не только конечные результаты). Рассмотрите это как своего рода отслеживание элементов, которые были задействованы при выполнении запроса.
Я попробовал следующую команду: траверс
traverse in from (traverse outE("E3") from (traverse in from (traverse outE("E2") from (traverse in from (traverse outE("E1") from V1)))))
, которая близка к тому, что мне нужно, но это не то же самое. Проблема с этой командой заключается в том, что если некоторые вершины исходного набора «V1» содержат ребра класса «E2» или «E3», то они также пройдут, хотя я не хочу, чтобы они проходили (начиная с запрос select будет пересекать края «E2» вершин, которые были возвращены только путем пересечения границ «E1»). То есть, я хотел бы, чтобы команда TRAVERSE проходила только результаты предыдущего шага, а не все результаты до этого момента
Есть ли способ достичь этого?
полный синтаксис здесь http://orientdb.com/docs/2.2.x/SQL-Match.html –
Благодаря Луиджи. Это то, что я искал. Мне просто нужно было отрегулировать ваш ответ, чтобы включить ребра между вершинами следующим образом: 'MATCH {class: V1, as: a} .outE (" E1 ") {as: b} .inV() {as : c} .outE ("E2") {as: d} .inV() {as: e} .outE ("E3") {as: f} .inV() {as: g} RETURN $ patterns' –