hasNot() не имеет никакого эффекта
Я использую обходы гремлинов через ноутбук Jupiter на Amazon Neptune.
Я пытаюсь отфильтровать ребра из определенной вершины по их метке, но, похоже, это не работает.
некоторые примерные данные:
%%gremlin
g.addV().property(id, 'u0').as('u0').
addV().property(id, 'u1').as('u1').
addV().property(id, 'u2').as('u2').
addV().property(id, 'u3').as('u3').
addE('freind').
from('u0').
to('u1').
addE('buddy').
from('u0').
to('u2').
addE('foe').
from('u0').
to('u3').
iterate()
и мой запрос:
(Это более сложно, чем нужно для этого примера, но мой фактический запрос повторяется несколько раз, поэтому я не могу просто использовать has('friend').has('buddy') потому что следующий шаг имеет другие метки .)
%%gremlin
g.withSack(1.0f).V('u0')
.repeat(
bothE().hasNot('foe')
.bothV())
.times(1)
.path().by().by(label)
вывод:
path[v[u0], freind, v[u1]]
path[v[u0], buddy, v[u2]]
path[v[u0], foe, v[u3]]
У меня есть пользователь, с которого я начинаю (u0), и мне нужны все пользователи, которые являются его друзьями, приятелями и т. д., но не его врагами.
к сожалению, он не фильтрует, как предполагалось ... есть идеи, что я делаю неправильно?
1 ответ
The
hasNot()
шаг будет отфильтровывать только те элементы, которые имеют свойство с указанным именем, в данном случае свойство с именем
foe
. Вместо этого вы должны посмотреть на использование
not()
с
hasLabel()
чтобы найти элементы, у которых нет определенной метки, как показано здесь:
g.withSack(1.0f).V('u0')
.repeat(
bothE().not(hasLabel('foe'))
.bothV())
.times(1)
.path().by().by(label)