2017-01-13 2 views
2

Например, я хочу исключить некоторые идентификаторы вершин при запросе.Как исключить определенные вершины в gremlin titan

Шаг 1: Я принимаю пользователя с последующим мной (1234):

ГВ (1234) .outE ("следующий")

Выход: 9876,3246 , 2343,3452,1233,6545


Шаг 2: I должны исключать или удалять определенные идентификаторы

пользователей = [3452,1233,6545]; .. g.V (1234) .outE ("следующий") ОБР(), за исключением (пользователи)

Выход: 9876,3246,2343. Это должно произойти, но функция except не работает. Есть ли какое-либо решение для фильтрации определенных вершинных идентификаторов.

ответ

3

Это так же просто, как:

users = [3452, 1233, 6545] 
g.V(1234).out("following").hasId(without(users)) 

Или просто:

g.V(1234).out("following").hasId(without(3452, 1233, 6545)) 
+0

Это правильный ответ. Моя версия слишком сложна по сравнению с этой! –

+0

Вышеуказанный метод не работает для меня. Есть ли другой способ. –

+0

«не работает» означает что? Вы получили сообщение об ошибке? –

1

Вы можете использовать шаг where для фильтрации вершин. Это позволяет исключить вершины на основе их идентификатора. Следующий запрос должен дать вам ожидаемый результат:

users = [3452,1233,6545]; 
g.V(1234).out("following").where(__.not(hasId(within(users)))) 

Обратите внимание, что я использовал out() в виде короткой форме outE().inV(), которая позволяет непосредственно перемещаться в соседние вершины.