Можем ли мы отфильтровать несколько ярлыков одновременно - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть сценарий, в котором я должен проверить несколько вершин с разными метками и сопоставить их свойства с родительской вершиной.А затем верните родительскую вершину, если все соответствует нормально.

Я попытался написать запросы с предложениями 'и' и предложением 'где', но ни один не работает:

Вот мои испытания:

g.V().hasLabel('schedule').inE().outV().hasLabel('url').as('a').outE().inV().aggregate('x').hasLabel('schedule').has('name', '3').as('b').select('x').hasLabel('states').has('name', 'federal').as('c').select('a')

g.V().hasLabel('schedule').inE().outV().hasLabel('url').as('a').outE().where(inV().hasLabel('schedule').has('name', '3')).where(inV().hasLabel('states').has('name', 'federal')).select('a')

g.V().hasLabel('schedule').inE().outV().hasLabel('url').as('a').outE().and(inV().hasLabel('schedule').has('name', '3'),inV().hasLabel('states').has('name', 'federal')).select('a')

g.V().hasLabel('schedule').inE().outV().hasLabel('url').as('a').outE().inV().aggregate('x').hasLabel('schedule').has('name', '3').as('b').select('x').unfold().hasLabel('states').has('name', 'federal').as('c').select('a')

Пожалуйста, проведите меня по правильному пути

1 Ответ

0 голосов
/ 12 сентября 2018

Вы определенно можете упростить свой подход. Я не думаю, что вам нужны метки шагов и select() для того, что вы делаете, и это хорошо, потому что они увеличивают стоимость вашего обхода. Я попытался переписать первый предоставленный вами обход, и я надеюсь, что у меня правильная логика, но, несмотря на это, я думаю, вы получите представление о том, что вам нужно сделать, когда увидите изменение:

g.V().hasLabel('schedule').in().hasLabel('url').
  where(and(out().hasLabel('schedule').has('name', '3'),
            out().hasLabel('states').has('name', 'federal')))

У вас уже есть «родительский элемент», который вы хотите вернуть в первой строке, поэтому просто сделайте фильтр с помощью where() и добавьте туда свою логику фильтрации, чтобы перейти от каждого из этих «родителей».

...