Я пытаюсь передать выбранные свойства с одного обхода на другой. Но это не работает с чистым способом гремлина.
g.V().has('pname', name).has('version', within(V().has('ecosystem', ecosystem).has('name', name).values('latest_version', 'latest_non_cve_version').))
Однако это работает, когда я разделяю приведенный выше запрос на несколько операторов.
x = g.V().has('ecosystem', ecosystem).has('name', name).values('latest_version', 'latest_non_cve_version').toList(); g.V().has('pname', name).has('version', within(x))
Есть ли способ добиться того же с помощью чистого гремлина?
Предикат within
не может выполнять обход. Вы должны быть в состоянии сделать то, что вам нужно, просто поменяв местами две части запроса. Поскольку у меня нет ваших данных, я показываю пример, в котором используется набор данных о воздушных маршрутах. Нужный вам запрос будет выглядеть примерно так:
gremlin> g.V().has('region',within('US-NM','US-TX')).
values('region').
fold().as('a').
V().hasLabel('airport').
where(within('a')).
by('region').
by().
count()
==>36