Обход Гремлин Найти все вершины, не связанные с конкретной вершиной
Это сценарий: у меня есть несколько вершин пользователей в orient-db. Я хочу получить всех пользователей, которые НЕ являются друзьями определенного пользователя, где друзья - это преимущество. Мне нужна команда Гремлина для этого. Кто-нибудь может мне помочь? Спасибо. Диего
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
поскольку он включает в себя линейное сканирование всех друзей, но я не могу придумать более простого способа найти всех НЕ в этом начальном наборе.