2013-05-06 8 views
1

Это сценарий: у меня есть число пользователей в вершине Ori-Db. Я хочу получить всех пользователей, которые НЕ являются друзьями определенного пользователя, где друг - это край. Мне нужна команда гремлина. Любой может мне помочь? Спасибо. DiegoGremlin-Traversing Найти все вершины, не связанные с определенной вершиной

ответ

1

Поскольку вы хотите найти ВСЕ пользователей, которые НЕ являются друзьями с определенным пользователем, я не уверен, что есть очень эффективный способ сделать это. Я использую диаграмму игрушек для демонстрации, но я предполагаю, что все вершины являются пользователями, а все ребра - краями друга. Я хотел бы сделать что-то вроде:

gremlin> g = TinkerGraphFactory.createTinkerGraph() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> l=[g.v(1)] as Set;g.v(1).out.fill(l)     
==>v[1] 
==>v[2] 
==>v[4] 
==>v[3] 

поэтому получить конкретный пользователь в список l, а также их друг

gremlin> g.V.except(l)           
==>v[6] 
==>v[5] 

затем найти все остальные, за исключением тех людей. это будут все, кто не был другом конкретного пользователя или того конкретного пользователя. Мне не очень нравится, что вам нужно перебирать g.V, поскольку он включает в себя линейное сканирование всех друзей, но я не могу придумать более простой способ найти всех НЕ в этом начальном наборе.