Мой вариант использования: Bag
вершина имеет ребро holds
до Box
вершины, а Box
вершина имеет ребро contains
до Fruit
вершины.Так что это родительско-дочерние отношения между 3 вершинами.
Можно ли написать запрос gremlin, который возвращает все связанные 3 вершины.например, мне нужно выбрать все сумки по id
, включая Box
вершину и далее до Fruit
вершины для этого идентификатора сумки.В SQL-подобном синтаксисе это просто select * from bag where id = 1
.
пример структуры:
g.addV('bag').property('id',1).property('name','bag1').property('size','12').as('1').
addV('box').property('id',2).property('name','box1').property('width','12').as('2').
addV('fruit').property('id',3).property('name','apple').property('color','red').as('3').
addV('bag').property('id',4).property('name','bag2').property('size','44').as('4').
addV('box').property('id',5).property('name','box2').property('width','14').as('5').
addV('fruit').property('id',6).property('name','orange').property('color','yellow').as('6').
addE('holds').from('1').to('2').
addE('contains').from('2').to('3').
addE('holds').from('4').to('5').
addE('contains').from('5').to('6').iterate()
Я хочу получить все свойства 1
, 2
, 3
при запросе вершин 1
.
Я хочу получить ответ в следующем формате.
"bags" : [{
"id":"1",
"name":"bag1",
"size" :"12",
"boxes":[ {
"id" : "2",
"name":"box1",
"width" : "12",
"fruits": [{
"id":"3",
"name" : "apple",
"color" : "red"
}]
}]
},
{
"id":"4",
"name":"bag2",
"size" : "44",
"boxes":[ {
"id" : "5",
"name":"box2",
"width" : "44",
"fruits": [{
"id":"6",
"name" : "orange"
"color" : "yellow"
}]
}]
}]
Но не уверен, что подобный случай возможен в gremlin, так как между вершинами нет неявной связи.