Пример данных: TinkerPop Modern Graph
Условия:
-
vadas
подключен к lop
в 2 hops
- Is
vadas
подключен к peter
в 3 hops
- Is
vadas
подключен к does-not-exists
в 1 hops
(поиск, который не даст никаких результатов)
Фиктивный поиск с ожидаемыми результатами
Условия 1
И 2
=> [vadas-marko-lop, vadas-marko-lop-peter]
Условия 1
ИЛИ 3
=> [vadas-marko-lop]
Что я смог получить
- Условия
1
И 2
gremlin> g.V().has("person", "name", "vadas").as("from")
.select("from").as("to1").repeat(both().as("to1")).times(2).emit().has("software", "name", "lop")
.select("from").as("to2").repeat(both().as("to2")).times(3).emit().has("person", "name", "peter")
.project("a", "b")
.by(select(all, "to1").unfold().values("name").fold())
.by(select(all, "to2").unfold().values("name").fold())
==>[a:[vadas,marko,lop],b:[vadas,marko,lop,peter]]
Условия
1
ИЛИ
2
gremlin> g.V().has("person", "name", "vadas").as("nodes")
.union(repeat(both().as("nodes")).times(2).emit().has("software", "name", "lop"),
out().has("x", "y", "does-not-exist").as("nodes"))
.project("a")
.by(select(all, "nodes").unfold().values("name").fold())
==>[a:[vadas,marko,lop]]
Итак, как этого добиться, у меня есть два разных формата запроса, есть ли способ написать формат запроса, который может сделатьоба?
И это не сработало, что-то здесь не так?Не возвращает узлы, которые были пройдены
g.V().has("person", "name", "vadas").as("nodes")
.or(
repeat(both().as("nodes")).times(2).emit().has("software", "name", "lop"),
repeat(both().as("nodes")).times(3).emit().has("person", "name", "peter")
)
.project("a").by(select(all, "nodes").unfold().values("name").fold())
==>[a:[vadas]]
// Expect paths to be printed here vadas..lop, vadas...peter