Как добавить количество дочерних вершин в Гремлин?
Вот график, над которым я работаю.
g = TinkerGraph.open().traversal()
first_generation = g.addV('person').property('id', '1').next()
second_generation = g.addV('person').property('id', '2').next()
third_generation = g.addV('person').property('id', '3').next()
third_generation_1 = g.addV('person').property('id', '4').next()
fourth_generation = g.addV('person').property('id', '5').next()
g.addE('child').from(first_generation).to(second_generation)
g.addE('child').from(second_generation).to(third_generation)
g.addE('child').from(second_generation).to(third_generation_1)
g.addE('child').from(third_generation).to(fourth_generation)
Здесь я хочу получить список всех людей с количеством детей, которые у них есть.
[{'id': 1, 'children': 1}, {'id': 2, 'children': 2}]
Я читаю о sideEffect
но не могу добавить результат sideEffect к выводу.
Любые предложения о том, как мы можем достичь желаемого результата?
1 ответ
Решение
Вы, вероятно, должны использовать project()
gremlin> g.V().hasLabel('person').
......1> project('id','children').
......2> by('id').
......3> by(out('child').count())
==>[id:1,children:1]
==>[id:2,children:2]
==>[id:3,children:1]
==>[id:4,children:0]
==>[id:5,children:0]
Он берет каждую вершину и превращает ее в Map
указанных ключей. by()
Затем модуляторы определяют, какими должны быть значения этих ключей.